;************************************************** __CONFIG 3F39H;設(shè)置配置位中振蕩方式為XT,其它全部禁止或關(guān)閉 ;************************************************ PCL EQU 02H ;定義程序計數(shù)器低字節(jié)寄存器地址 STATUS EQU 03H ;定義狀態(tài)寄存器地址 PORTA EQU 05H ;定義RA口數(shù)據(jù)寄存器地址 PORTC EQU 07H ;定義RC口數(shù)據(jù)寄存器地址
TRISA EQU 85H ;定義RA口方向控制寄存器 TRISC EQU 87H ;定義RC口方向控制寄存器 ADCON1 EQU 9FH ;定義ADC模塊控制寄存器1的地址 ;----------------------- STATUS C EQU 0 ;定義進位標(biāo)志位位地址 Z EQU 2 ;定義0標(biāo)志位位地址 RP0 EQU 5 ;定義頁選位RP0位地址 ;----------------------- COUNTER EQU 20H ;定義計數(shù)器寄存器 COUNT0 EQU 21H ;定義廷時變量計數(shù)器 COUNT1 EQU 22H ;定義廷時變量計數(shù)器 COUNT2 EQU 23H ;定義廷時變量計數(shù)器 PORTA_B EQU 25H ;定義數(shù)碼管位選寄存器 ;-------------------- ORG 0000H NOP ;放置一條ICD必需的空操作指令 GOTO MAIN ORG 0008H ;****************************************************** CONVERT1 ;取數(shù)碼管位碼 ADDWF PCL,1 ;地址偏移量加當(dāng)前PC值 TABLE1 RETLW 0FDH ;第一位數(shù)碼管 RETLW 0FEH ;第二位數(shù)碼管 RETLW 0F7H ;第三位數(shù)碼管 RETLW 0FBH ;第四位數(shù)碼管 RETLW 0DFH ;第五位數(shù)碼管 RETLW 0EFH ;第六位數(shù)碼管 ;-------------------- ---------------------------------- CONVERT ;取數(shù)碼管段碼 ADDWF PCL,1 ;地址偏移量加當(dāng)前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 PORTA ;初始化IO口 CLRF PORTC ; BSF STATUS,RP0 MOVLW 07H MOVWF ADCON1 ;設(shè)置RA口全部為普通數(shù)字IO口 MOVLW 00H MOVWF TRISA ;設(shè)置RA,RC口全部為輸出 MOVWF TRISC BCF STATUS,RP0 ;---------------------- LOOPA MOVLW 0FFH ;讓數(shù)碼所有劃先熄滅 MOVWF PORTC MOVLW 00H MOVWF PORTA_B ;位選寄存器送初值0,讓第一位先顯示 LOOP1 MOVFW PORTA_B ;取位選碼 CALL CONVERT1 MOVWF PORTA ;位選碼送RA口 CLRF COUNTER ;清段碼寄存器,讓其先顯示1 CLRW LOOP2 CALL CONVERT ;取段碼 MOVWF PORTC ;段碼送RC口顯示 CALL DELAY ; INCF COUNTER,1 ;段碼加1直到第10位即“! MOVLW .11 ; XORWF COUNTER,0 ; BZ LOOPB ; MOVFW COUNTER ; GOTO LOOP2 ; ;------------------------- LOOPB INCF PORTA_B,0 ;位碼加1直到第6位顯示完又顯示第一位 MOVWF PORTA_B ; XORLW 06H ; BTFSS STATUS,Z ; GOTO LOOP1 ; GOTO LOOPA ; ;---------------------------------廷時子程序------ DELAY MOVLW .2 ;設(shè)置延時常數(shù) MOVWF COUNT0 L1 MOVLW .255 ; MOVWF COUNT1 L2 MOVLW .255 ; MOVWF COUNT2 L3 DECFSZ COUNT2,1 ;遞減循環(huán) GOTO L3 ; DECFSZ COUNT1,1 ; GOTO L2 ; DECFSZ COUNT0,1 ; GOTO L1 ; RETLW 0
;----- ----------------------------------------------- END
|