PIC16F877A单片机led的动态显示

嵌入式系统 时间:2011-02-24来源:网络

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

关键词: 单片机 51单片机 MCU 单片机视频教程 单片机开发 ARM单片机 AVR单片机 PIC单片机 Atmel stm32 单片机学习 单片机

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版