Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- INCLUDE "P16F877.inc"
- List P=16F877
- ;************************************
- d1 equ 0x20
- d2 equ 0x21
- d3 equ 0x22
- w_temp equ 0x23
- status_temp equ 0x24
- ASCI equ 0x25
- var_a equ 0x26
- var_b equ 0x27
- ganger equ 0x28
- EN equ 0x01
- rad equ 0x29
- ;************************************
- org 0x00
- clrf STATUS
- movlw 0x00
- movwf 0x0A
- goto init
- ;************************************
- org 0x04
- goto avbrott
- ;************************************
- avbrott movwf w_temp
- swapf STATUS,0
- movwf status_temp
- ;***
- ;hämtar tecken från receive reg
- call clear_display
- movf RCREG,0
- movwf ASCI
- ;skicka tecten till LCD
- call Visa_LCD
- ;call waithz
- ;***
- swapf status_temp,0
- movwf STATUS
- swapf w_temp,1
- swapf w_temp,0
- retfie
- ;************************************
- clear_display movlw 0x01
- movwf rad
- andlw 0xF0
- movwf PORTD
- call enable
- swapf rad,w
- andlw 0xF0
- movwf PORTD
- call enable
- call waitms
- return
- ;************************************
- waitms movlw 0x0a
- movwf var_b
- loop2 movlw 0x64
- movwf var_a
- loop1 decfsz var_a,1
- goto loop1
- decfsz var_b,1
- noll
- goto loop2
- return
- ;************************************
- enable bsf PORTD,EN
- call waitms
- bcf PORTD,EN
- call waitms
- return
- ;************************************
- LCDinit movlw 0xff
- movwf ganger
- loop3 call waitms
- decfsz ganger,1
- goto loop3
- ;Första anrop
- movlw 0x30
- movwf PORTD
- call enable
- ;Vänta mer 4,1ms
- movlw 0x05
- movwf ganger
- loop4 call waitms
- decfsz ganger,1
- goto loop4
- ;andra anrop
- movlw 0x30
- movfw PORTD
- call enable
- ;Vänta mer än 0,1ms
- call waitms
- ;tredje anrop
- movlw 0x30
- movwf PORTD
- call enable
- call waitms
- movlw 0x20
- movwf PORTD
- call enable
- call waitms
- movlw 0x20
- movwf PORTD
- call enable
- movlw 0x80
- movwf PORTD
- call enable
- call waitms
- movlw 0x00 ;clearar displayen
- movwf PORTD
- call enable
- movlw 0x10
- movwf PORTD
- call enable
- call waitms
- movlw 0x00
- movwf PORTD
- call enable
- movlw 0x60
- movwf PORTD
- call enable
- call waitms
- movlw 0x00
- movwf PORTD
- call enable
- movlw 0xE0
- movwf PORTD
- call enable
- call waitms
- return
- Visa_LCD movwf ASCI
- andlw 0xF0
- movwf PORTD
- bsf PORTD,0
- call enable
- swapf ASCI,w
- andlw 0xF0
- movwf PORTD
- bsf PORTD,0
- call enable
- return
- init movlw 0xFF
- movwf PORTA
- movwf PORTB
- clrf PORTC
- clrf PORTD
- bsf STATUS,RP0
- movlw 0x00
- movwf TRISA
- movwf TRISB
- movwf TRISD
- movlw b'11000000' ;tar bort RC7 o RC6 som digitala I/O för UART
- movwf TRISC
- movlw 0x06
- movwf ADCON1
- bcf STATUS,RP0
- ;*** UART INSTÄLLNINGAR ***
- movlw b'10010000'
- movwf RCSTA
- bsf STATUS,RP0
- movlw b'00100110'
- movwf TXSTA
- movlw 0x4D ;77
- movwf SPBRG
- bcf STATUS,RP0
- ; *** AVBROTT INSTÄLLNINGAR ***
- bsf STATUS,RP0
- movlw b'00100000'
- movwf PIE1
- bcf STATUS,RP0
- movlw b'11000000'
- movwf INTCON
- call LCDinit
- goto main
- waithz movlw 0x1A ;2999995 cycles
- movwf d1 ;Delay = 1 second
- movlw 0x8B
- movwf d2
- movlw 0x07
- movwf d3
- Delay_0
- decfsz d1, f
- goto $+2
- decfsz d2, f
- goto $+2
- decfsz d3, f
- goto Delay_0
- ;5 cycles
- goto $+1
- goto $+1
- nop
- return
- slack movlw 0x00
- movwf PORTA
- movwf PORTB
- return
- tand movlw 0xFF
- movwf PORTA
- movwf PORTB
- return
- main call waithz
- call slack
- call waithz
- call tand
- goto main
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement