程序清单:
PCL EQU 02H ;程序计数器低字节寄存器地址
STATUS EQU 3H ;状态寄存器地址
Z EQU 2H ;状态寄存器中的0标志位的位地址
INTCON EQU 0BH ;中断控制寄存器地址
PORTC EQU 7H ;端口C的数据寄存器地址
TRISC EQU 87H ;端口C的方向控制寄存器地址
COUNT EQU 20H ;定义一个计数器变量寄存器
RP0 EQU 5H ;状态寄存器中的页选位RP0
TMR1L EQU 0EH ;TMR1低字节寄存器地址
TMR1H EQU 0FH ;TMR1高字节寄存器地址
PIR1 EQU 0CH ;第一中断标志寄存器
PIE1 EQU 8CH ;第一中断使能寄存器
T1CON EQU 10H ;TMR1控制寄存器_
TMR1LB EQU 0DCH ;TMR1低字节寄存器初始值
TMR1HB EQU 0BH ;TMR1高字节寄存器初始值
PCL EQU 02H ;程序计数器低字节寄存器地址
STATUS EQU 3H ;状态寄存器地址
Z EQU 2H ;状态寄存器中的0标志位的位地址
INTCON EQU 0BH ;中断控制寄存器地址
PORTC EQU 7H ;端口C的数据寄存器地址
TRISC EQU 87H ;端口C的方向控制寄存器地址
COUNT EQU 20H ;定义一个计数器变量寄存器
RP0 EQU 5H ;状态寄存器中的页选位RP0
TMR1L EQU 0EH ;TMR1低字节寄存器地址
TMR1H EQU 0FH ;TMR1高字节寄存器地址
PIR1 EQU 0CH ;第一中断标志寄存器
PIE1 EQU 8CH ;第一中断使能寄存器
T1CON EQU 10H ;TMR1控制寄存器_
TMR1LB EQU 0DCH ;TMR1低字节寄存器初始值
TMR1HB EQU 0BH ;TMR1高字节寄存器初始值
BTFSC STATUS, Z ;否!跳一步
CLRF COUNT ;是!应该回到0
RETFIE ; 中断返回
;****** *****************************
MAIN BSF STATUS, RP0 ;设置文件寄存器的体1
MOVLW 00H
MOVWF TRISC
BSF PIE1,0 ;开放TMR1中断使能位
BCF STATUS,RP0 ;恢复到文件寄存器的体0
MOVLW 24H ;设置控制寄存器:暂时不打开TMR1
MOVWF T1CON ;预分频器设为1:4
MOVLW 0C0H ;GIE=1,PEIE=1
MOVWF INTCON
CLRF COUNT ;清0计数器(即查表索引值)
MOVLW TMR1LB ;TMR1低字节赋初值
MOVWF TMR1L
MOVLW TMR1HB;TMR1高字节赋初值
MOVWF TMR1H
LOOP BSF T1CON,0 ;启动TMR1开始计数
GOTO LOOP ;等待TMR1超时溢出中断
;***********读取显示信息的查表子程序**************
READ ADDWF PCL,1 ;地址偏移量加当前PC值
RETLW B'10000000';显示信息码,下同
RETLW B'01000000'
RETLW B'00100000'
RETLW B'00010000'
RETLW B'00100000'
RETLW B'01000000'
RETLW B'00100000'
RETLW B'00010000'
RETLW B'00001000'
RETLW B'00010000'
RETLW B'00100000'
RETLW B'00010000'
|