PIC16C54单片机原理及应用
美国 Microchip 公司推出的 PIC 系列 8 位单片机是业界率先采用精简指令集计算机 (RISC-Reduced Instruction
Set Computer) 结构,具有高性价比的嵌入式控制器。 PIC 系列单片机具有高速度,低工作电压,较大的输入输出直接驱动能力(可直接驱动 LED 负载),低价一次性编程 (OTP-One Time Programmable) 技术,低功耗,小体积等优点。
PIC16C5X 系列是 PIC 系列的基础级产品,现在,介绍该系列的典型芯片 PIC16C54 。
一、 PIC16C54 概述:
1)结构图:
程序存储器EPROM
定时器
数据存储器RAM
CPU
输入输出接口
图1
PIC16C54 主要资源:
* 512×12 位 EPROM
* 25 字节通用 RAM
* 12 根双向 I / O 线
* TMR0 定时器/计数器
* 上电复位 POR 电路
* 复位定时器
* 自振式看门狗 WDT.
2 )指令周期:
PIC16C54 采用 8 位宽的数据总线和 12 位宽指令总线相互独立的哈佛 (Harvard) 结构,与其它一些单片机相比,程序代码更加紧凑,指令执行速度更快。图( 2 ) 所示的是 时钟/指令时序图
图2
如图 2 所示,从引脚 OSC1 输入或振荡电路产生的时钟信号在内部经四分频产生四个不重叠的时钟 Q1,Q2,Q3,Q4 。程序计数器 PC 在每个 Q1 节拍间加 1 ,指令在 Q4 节拍从程序存储器中取出并锁存于指令寄存器中,在下一指令周期被译码并执行。因此,在程序执行过程中,取指令与执行指令可重迭进行,即当一条指令被执行时,下一条指令已从程序存储器中读出。
3 )引脚功能说明
RA0-RA3:可位控 4位双向 I/O口,输入为 TTL电平
RB0 - RB7 :可位控 8 位双向 I/O 口,输入为 TTL 电平
TOCKI :定时器/计数器 TMR0 的外部触发计数信号输入端。软件定义 TMR0 为计数器时,此引脚上的信号上升沿或下降沿用于计数,可通过软件设置 OPTION 寄存器相应的控制位选择触发边沿,当 TMR0 为内部时钟源时,该引脚当接 VDD 或 VSS, 以减少功耗。
MCLR: 当为低电平时,单片机复位
VSS :地端
VDD :电源电压
OSC1 :振荡信号输入端
OSC2 :振荡信号输出端
二.应用实例
如图4所示,PIC16C54芯片处于睡眠状态,当任一按键按下,将唤醒PIC16C54进行键盘处理。本例中,按下SW1,点亮绿灯,按下SW2,点亮红灯。
进入睡眠时,应将键扫描输出线SCAN1,SCAN2置为低电平,进入睡眠后,电容C被充分充电,使MCLR保持高电平。当有按键按下时,电容C经电阻R2或R3放电,其两端电压迅速下降(下降时间约为1ms),从而使MCLR下拉为低电平,进入复位。唤醒PIC16C54的复位时间(大约为18ms),也应更小于键按下的最小时间(大约为50-100ms)。
每次扫描即SCAN1,SCAN2为低电平的时间大约为10ms,当键处理程序完成后,程序对键盘循环扫描直至键释放,然后将SCAN1,SCNA2输出置为低电平,单片机重新进入睡眠。图中所示的电阻R4-R8用来防止电容C放电产生的大电流,保护芯片。
图4
程序清单:
ORG
0
START CALL INIT_PORT_B ;初始化B口
CALL DELAY ;延时
CALL SCAN_KEYS ;键盘扫描
MOVWF GP ;W->GP
BTFSC GP,SW1 ;按键SW1按下?
BCF PORTB,GRN_LED ;点亮绿灯
BTFSC GP,SW2 ;按键SW2按下?
BCF PORTB,RED_LED ;点亮红灯
CHK_FOR_KEY CALL DELAY ;延时
CALL SCAN_KEYS ;键盘扫描
XORLW 0 ;键释放
GO TO CHK_FOR_KEY ;继续扫描
NO_KEY_PRESSED BCF PORTB,SCAN1 ;置SCAN1为低电平
BCF PORTB,SCAN2 ;置SCAN2为低电平
SLEEP ;睡眠
图5