美国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
|
|