以PIC16F676为例,汇编程序如下,结果为开机全不亮,然后依次到全亮,周而复始,间隙时间1秒,电路在最后面 LIST P=16F676
INCLUDE "P16F676.INC"

__ConFIG(31C4H)
CBLOCK 20H
CN1
CN2
CN3
ENDC
ORG 005H
GOTO MAINMAIN
BANKSEL PORTC
CLRF PORTC
MOVLW 7H
MOVWF CMCON
CLRF CN1
CLRF CN2
CLRF CN3
BANKSEL TRISA
CLRF TRISA
CLRF ANSEL
CLRF TRISC CALL 3FFH
MOVWF OSCCAL
BCF STATUS,RP0DIZENG
BANKSEL PORTC
CLRF PORTC
CALL DELAY_1S
BSF PORTC,0
CALL DELAY_1S
BSF PORTC,1

CALL DELAY_1S
BSF PORTC,2
CALL DELAY_1S
BSF PORTC,3
CALL DELAY_1S
BSF PORTC,4
CALL DELAY_1S
BSF PORTC,5
CALL DELAY_1S
GOTO DIZENG
DELAY_1S
MOVLW 0AH
MOVWF CN1
DL_1
MOVLW 84H
MOVWF CN2
DL_2
MOVLW 0FBH
MOVWF CN3
DL_3
DECFSZ CN3,1
GOTO DL_3
DECFSZ CN2,1
GOTO DL_2
DECFSZ CN1,1
GOTO DL_1
RETURN

END
电路没什么问题,程序我提供一点思路:
1.定时中断中处理一个变量,根椐这个变量来叠加秒,分,时。
2.循环扫描,根椐称,分,时的数值对应显示
还有一个关键点就是动态显示,其实只要逐一显示每一位就行了。这在C结构中很容易实现,关键是这一个概念。如果不明白,可以多查找一下这方面的资料,相信你很快就会明白的!


