六个LED从全灭一个一个亮

核心提示以PIC16F676为例,汇编程序如下,结果为开机全不亮,然后依次到全亮,周而复始,间隙时间1秒,电路在最后面 LIST P=16F676 INCLUDE "P16F676.INC" __CONFIG(31C4H) CBLOCK 20HCN

以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结构中很容易实现,关键是这一个概念。如果不明白,可以多查找一下这方面的资料,相信你很快就会明白的!

 
友情链接
鄂ICP备19019357号-22