📄 lcdt232.asm
字号:
;=====i2c lcd test for Ericsson T230 CSTN ======02/09/2007==
; iic lcd driver: UC1682
; ra0,ra1 sdata,sclock
; rb0 to rb7 led outputs
; internal clock
; standard crystal 4.000 MHz XT - 1us pe instructiune
; Program realizat de Ing. Bergthaller Iulian-Alexandru
;------------------------------------------------------------
;------------------------------------------------------------
LIST P=16F627;f=inhx8m
#include "P16F627.INC" ; Include header file
__CONFIG _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _BODEN_OFF & _LVP_OFF & _CP_OFF & _MCLRE_OFF
;------------------------------------------------------------
cblock 0x20 ; Beginn General Purpose-Registerstatus
count1
count2
count3
transo
count4
count5
count6
endc
;------------------------------------------------------------
#DEFINE sclk PORTA,1
#DEFINE sdta PORTA,0
#DEFINE led PORTA,2
;------------------------------------------------------------
org 0x00
goto init
org 0x04
;------------------------------------------------------------
init nop
bcf STATUS,RP0 ; Bank 0
movlw 0x07 ; Turn comparators off and enable pins for I/O
movwf CMCON
bsf STATUS,RP0 ; Bank 1
movlw 0x00
movwf TRISA
movlw 0x00 ; output
movwf TRISB
bcf STATUS,RP0 ; Bank 0
;***************************************************
start movlw 0xFF
movwf PORTB
call pause
movlw 0x00
movwf PORTB
movlw 0xFF
movwf PORTB
call pause
bcf led
;***************************************************
;* Lcd init commands *
;***************************************************
scrie call iict ; i2c start
movlw 0x78 ; device write cmd address
call act ; i2c send subroutine
movlw 0x29 ; c=10nF
call act
call iicp ; i2c stop
call pause
call iict ; i2c start
movlw 0x78 ; device write cmd address
call act ; i2c send subroutine
movlw 0xEA ; Vbias rate
call act
call iicp ; i2c stop
call pause
call iict ; i2c start
movlw 0x78 ; device write cmd address
call act ; i2c send subroutine
movlw 0x81 ; Vbias pot
call act
movlw 0xA8 ; pot value
call act
call iicp ; i2c stop
call pause
call iict ; i2c start
movlw 0x78 ; device write cmd address
call act ; i2c send subroutine
movlw 0x27 ; temp.
call act
call iicp ; i2c stop
call pause
call iict ; i2c start
movlw 0x78 ; device write cmd address
call act ; i2c send subroutine
movlw 0xAF ; lcd enable
call act
call iicp ; i2c stop
call pause
call iict ; i2c start
movlw 0x78 ; device write cmd address
call act ; i2c send subroutine
movlw 0xD4 ;
call act
call iicp ; i2c stop
call pause
call pause
call iict ; i2c start
movlw 0x78 ; device write cmd address
call act ; i2c send subroutine
movlw 0xA1 ; line rate
call act
call iicp ; i2c stop
call pause
;***************************************************
movlw 0x50 ;
movwf count6
call iict ; i2c start
movlw 0x7A ; device write cmd address
call act ; i2c send subroutine
rep movlw 0x04 ;
movwf count5
line movlw 0x07 ; ram data
call act
movlw 0x07 ; ram data
call act
movlw 0x07 ; ram data
call act
movlw 0x07 ; ram data
call act
movlw 0x38 ; ram data
call act
movlw 0x38 ; ram data
call act
movlw 0x38 ; ram data
call act
movlw 0x38 ; ram data
call act
movlw 0x38 ; ram data
call act
movlw 0xC0 ; ram data
call act
movlw 0xC0 ; ram data
call act
movlw 0xC0 ; ram data
call act
movlw 0xC0 ; ram data
call act
movlw 0xC0 ; ram data
call act
movlw 0xC0 ; ram data
call act
movlw 0xC0 ; ram data
call act
movlw 0xC0 ; ram data
call act
movlw 0xC0 ; ram data
call act
movlw 0xC0 ; ram data
call act
movlw 0xC0 ; ram data
call act
movlw 0xC0 ; ram data
call act
movlw 0xC0 ; ram data
call act
movlw 0x1F ; ram data
call act
movlw 0x1F ; ram data
call act
movlw 0x1F ; ram data
call act
movlw 0x1F ; ram data
call act
decfsz count5,F
goto line
;movlw 0x1F ; ram data
;call act
decfsz count6,F
goto rep
call iicp ; i2c stop
homa goto homa
;***************************************************
act movwf transo ; iic data transmission
call oled
movlw 0x08
movwf count3
vbit bcf sclk
call pause
btfsc transo,7
bsf sdta
btfss transo,7
bcf sdta
call pause
bsf sclk
call pause
bcf sclk
call pause
rlf transo,F
decfsz count3,F
goto vbit
call ackp
retlw 0x00
;***************************************************
iicp bcf sdta ; stop condition module
call pause
bsf sclk
call pause
bsf sdta ; stop command
call pause
bcf sclk
call pause
retlw 0x00
;***************************************************
iict bsf sdta ; start condition module
bsf sclk
call pause
bcf sdta ; start command
call pause
bcf sclk
call pause
retlw 0x00
;***************************************************
ackp call s_in
bsf sclk ; one clock step for acknowledge (not read)
call pause
btfss sdta ;sda=0 ?
bsf led
call halta
bcf led
bcf sclk
call pause
call s_out
retlw 0x00
;***************************************************
oled call halta ; iic data before transmission displayed on portb
movlw 0x00
movwf PORTB
movf transo,W
movwf PORTB
call halta
movlw 0x00
movwf PORTB
retlw 0x00
;***************************************************
s_out bsf STATUS,RP0 ; Bank 1
movlw 0x00
movwf TRISA
bcf STATUS,RP0 ; Bank 0
retlw 0x00
;***************************************************
s_in bsf STATUS,RP0 ; Bank 1
movlw 0x01
movwf TRISA
bcf STATUS,RP0 ; Bank 0
retlw 0x00
;***************************************************
pause movlw 0x02 ; cca. 6ms delay
movwf count1
d1 movlw 0x10
movwf count2
d2 decfsz count2,F
goto d2
decfsz count1,F
goto d1
retlw 0x00
;***************************************************
halta movlw 0x02 ; delay
movwf count3
r3 movlw 0x02
movwf count1
r1 movlw 0x02
movwf count2
r2 decfsz count2,F
goto r2
decfsz count1,F
goto r1
decfsz count3,F
goto r3
retlw 0x00
;------------------------------------------------------------
end
;============================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -