PIC 单片机 数码管计数器示例程序
;**************************************************
__CONFIG 3F39H;设置配置位中振荡方式为XT,其它全部禁止或关闭
;************************************************
PCL EQU 02H ;定义程序计数器低字节寄存器地址
STATUS EQU 03H ;定义状态寄存器地址
PORTA EQU 05H ;定义RA口数据寄存器地址
PORTB EQU 06H ;定义RB口数据寄存器地址
PORTC EQU 07H ;定义RC口数据寄存器地址
PORTD EQU 08H ;定义RD口数据寄存器地址
TRISA EQU 85H ;定义RA口方向控制寄存器
TRISB EQU 86H ;定义RA口方向控制寄存器
TRISC EQU 87H ;定义RC口方向控制寄存器
TRISD EQU 88H ;定义RD口方向控制寄存器
ADCON1 EQU 9FH ;定义ADC模块控制寄存器1的地址
;-----------------------STATUS
C EQU 0 ;定义进位标志位位地址
Z EQU 2 ;定义0标志位位地址
RP0 EQU 5 ;定义页选位RP0位地址
;-----------------------
COUNTER EQU 20H ;定义计数器寄存器
COUNT0 EQU 21H ;定义廷时变量计数器
COUNT1 EQU 22H ;定义廷时变量计数器
COUNT2 EQU 23H ;定义廷时变量计数器
PORTD_B EQU 25H ;定义数码管位选寄存器
;--------------------
ORG 0000H
NOP ;放置一条ICD必需的空操作指令
GOTO MAIN
ORG 0008H
;******************************************************
CONVERT1 ;取数码管位码
ADDWF PCL,1 ;地址偏移量加当前PC值
TABLE1
RETLW 07FH ;第一位数码管
RETLW 0BFH ;第二位数码管
RETLW 0DFH ;第三位数码管
RETLW 0EFH ;第四位数码管
;-------------------- ----------------------------------
CONVERT ;取数码管段码
ADDWF PCL,1 ;地址偏移量加当前PC值
TABLE
RETLW 0C0H ;0
RETLW 0F9H ;1
RETLW 0A4H ;2
RETLW 0B0H ;3
RETLW 99H ;4
RETLW 92H ;5
RETLW 82H ;6
RETLW 0F8H ;7
RETLW 80H ;8
RETLW 98H ;9
RETLW 7FH ;.
;*******************************************************
MAIN
CLRF PORTC ;初始化IO口
CLRF PORTD ;
BSF STATUS,RP0
MOV LW 00H
MOV WF TRISC ;设置RC,RD口全部为输出
MOV WF TRISD
BCF STATUS,RP0
;----------------------
LOOPA
MOV LW 0FFH ;让数码所有划先熄灭
MOV WF PORTC
MOV LW 00H
MOV WF PORTD_B ;位选寄存器送初值0,让第一位先显示
LOOP1
MOV FW PORTD_B ;取位选码
CALL CONVERT1
MOV WF PORTD ;位选码送RD口
CLRF COUNTER ;清段码寄存器,让其先显示1
CLRW
LOOP2
CALL CONVERT ;取段码
MOV WF PORTC ;段码送RC口显示
CALL DELAY ;
上一篇:PIC单片机LED流水灯程序