技术热线: 4007-888-234
设计开发

专注差异化嵌入式产品解决方案 给智能产品定制注入灵魂给予生命

开发工具

提供开发工具、应用测试 完善的开发代码案例库分享

技术支持

从全面的产品导入到强大技术支援服务 全程贴心伴随服务,创造无限潜能!

新闻中心

提供最新的单片机资讯,行业消息以及公司新闻动态

PIC16F877A单片机led的动态显示

更新时间: 2019-03-21
阅读量:289

list p=16F877A,R=DEC
include "p16F877A.inc"
;;;;;user variables;;;;;;;;
Count2 equ 23H
Count3 equ 24H
data_out1 equ 25H
data_out2 equ 26H
;;;;;;;reset vector;;;;;;;;;
org 0x00
goto mainline
;;;;;;delay program;;;;;;;
delay_2ms
movlw 0x05
movwf Count2
lp0 movlw 0xff
movwf Count3
lp1 decfsz Count3,F
goto lp1
decfsz Count2,F
goto lp0
return

delay_250ms
movlw 0x41
movwf Count2
movlw 0xff
movwf Count3
decfsz Count3,F
goto $-1
decfsz Count2,F
goto $-5
movlw 0xff
movwf Count2
movlw 0xff
movwf Count3
decfsz Count3,F
goto $-1
decfsz Count2,F
goto $-5
return
;;;;;;main program;;;;;;;;;
mainline
banksel TRISA
movlw 0x00
movwf TRISA
movlw 0xff
movwf TRISB
movlw 0x00
movwf TRISC
movwf TRISD
movwf TRISE

banksel PORTA
movlw 0x00
movwf PORTA
movwf PORTB
movwf PORTC
movwf PORTD
movwf PORTE

banksel INTCON
bcf INTCON,PEIE
lp
btfsc PORTB,0
goto lp
call delay_250ms
wait1
btfss PORTB,2
goto led1
btfss PORTB,3
goto led2
goto wait1
lp2
movf PORTA,W
movwf data_out1
L2
btfsc PORTB,1
goto L2
call delay_250ms
wait2
btfss PORTB,2
goto led3
btfss PORTB,3
goto led4
goto wait2
led1
call delay_250ms
movlw 0x00
movwf PORTA
movlw 0x01
movwf PORTA
movlw 0xfe
movwf PORTC
goto lp2
led2
call delay_250ms
movlw 0x00
movwf PORTA
movlw 0x02
movwf PORTA
movlw 0xfe
movwf PORTC
goto lp2
led3
call delay_250ms

movlw 0x01
movwf PORTA
movlw 0xfd
movwf PORTC
call delay_2ms

banksel PORTC
movlw 0x00
movwf PORTC
movlw 0xfe
movwf PORTC
movf data_out1,W
movwf PORTA

call delay_2ms
call delay_2ms

led4
call delay_250ms

movlw 0x02
movwf PORTA
movlw 0xfd
movwf PORTC
call delay_2ms

banksel PORTC
movlw 0x00
movwf PORTC
movlw 0xfe
movwf PORTC
movf data_out1,W
movwf PORTA

call delay_2ms

end