📄 oki80second_1.dt.bak
字号:
mov a,data
MOV DATATEMP, a
RLC DATATEMP
mov a, DATATEMP
MOV data,a
mov a, data1
MOV DATATEMP, a
RLC DATATEMP
mov a, DATATEMP
MOV data1, a
mov a,BCDTEMP_LOW
MOV DATATEMP, a
JBC STATUS,C
INCA DATATEMP
LOOP_1:
ADD A,BCDTEMP_LOW
DAA
MOV BCDTEMP_LOW,A
;----------------------------------------
mov a, BCDTEMP_HIGH
MOV DATATEMP,a
JBC STATUS,C
INCA DATATEMP
LOOP_2:
ADD A,BCDTEMP_HIGH
DAA
MOV BCDTEMP_HIGH ,A
DJZ MOVE_TIME
JMP LOOP
mov a,BCDTEMP_HIGH
mov datatemp,a
swapa datatemp
and a,@0x0f
mov bcddata,a
mov a,BCDTEMP_HIGH
and a,@0x0f
mov bcddata1,a
mov a,BCDTEMP_low
mov datatemp,a
swapa datatemp
and a,@0x0f
mov bcddata2,a
mov a,BCDTEMP_low
and a,@0x0f
mov bcddata3,a
RET
;================================================== I2C PROGRAM
Read24c01: ; BACK I2CDATA_HIGH; I2CDATA_LO
call E_START
MOV A,@0XA0
MOV E_BUFFER,A
call BYTE_WRITE
MOV A,@0x8
MOV E_BUFFER,A
call BYTE_WRITE
call dly
call E_START
MOV A,@0XA1
MOV E_BUFFER,A
call BYTE_WRITE
call BYTE_READ
MOV A,E_BUFFER
MOV i2cdata_high,A
BS port6,SDA
BS port6,SCL
SDA_IN
;----------------------------------------
;nop
nop
call E_START
MOV A,@0XA0
MOV E_BUFFER,A
call BYTE_WRITE
MOV A,@0x09
MOV E_BUFFER,A
call BYTE_WRITE
call dly
call E_START
MOV A,@0XA1
MOV E_BUFFER,A
call BYTE_WRITE
call BYTE_READ
MOV A,E_BUFFER
MOV i2cdata_low,A
BS port6,SDA
NOP
NOP
BS port6,SCL
SDA_IN
;call dly
RET
;-----------------------------write
E_W:
call E_START
MOV A,@0XA0
MOV E_BUFFER,A
call BYTE_WRITE
MOV A,@0x08
MOV E_BUFFER,A
call BYTE_WRITE
MOV A,i2cdata_high
MOV E_BUFFER,A
call BYTE_WRITE
call E_STOP
BS port6,SDA
BS port6,SCL
SDA_IN
call DELAY10MS
;----------------------------------------
call E_START
MOV A,@0XA0
MOV E_BUFFER,A
call BYTE_WRITE
MOV A,@0x09
MOV E_BUFFER,A
call BYTE_WRITE
MOV A,i2cdata_low
MOV E_BUFFER,A
call BYTE_WRITE
call E_STOP
BS port6,SDA
BS port6,SCL
SDA_in
nop
RET
;****************************
;I2C操作子程序(时序)集合
;****************************
BYTE_WRITE:
SDA_OUT
call dly
MOV A,@0X08
MOV SLAVE,A
WRITE_LOOP:
BC port6,SCL
NOP
RLC E_BUFFER
JBC status,C
JMP $+3
BC port6,sda
JMP $+2
BS port6,sda
JMP $+1
BS port6,scl
call dly
;BC port6,SCL
DJZ SLAVE
JMP WRITE_LOOP
WAIT_EP_ACK:
BC port6,SCL
SDA_IN
CALL dly
BS port6,SCL
CALL dly
JBC port6,SDA
JMP WAIT_EP_ACK2
BC port6,SCL
RET
WAIT_EP_ACK2:
BC port6,SCL
SDA_IN
CALL dly
BS port6,SDA
CALL dly
JBC port6,SDA
JMP EER
BC port6,SCL
RET
EER:
RET
;-----------------------------------------------
BYTE_READ:
SDA_IN
BC port6,SCL
MOV A,@0X08
MOV SLAVE,A
READ_LOOP:
BS port6,scl
call dly
BC E_BUFFER,0
JBC port6,sda
BS E_BUFFER,0
MOV A,SLAVE
SUB A,@0X01
JBS status,Z
RLC E_BUFFER
READ_FINAL:
BC port6,SCL
CALL dly
DJZ SLAVE
JMP READ_LOOP
RET
;-------------------------------------------
E_START:
BS port6,SDA
BS port6,SCL
SDA_OUT
call dly
BC port6,SDA
call dly
BC port6,SCL
RET
E_STOP:
SDA_OUT
BC port6,SDA
BC port6,SCL
call dly
BS port6,scl
call dly
BS port6,sda
call dly
RET
;****************************
;宏定义
;****************************
;=================
;设置SCL,SDA为输出口
;=================
SDA_OUT MACRO
mov a,@00001110b
iow PROT_I2C
ENDM
;=================
;设置SCL为输出口,SDA为输入口
;=================
SDA_IN MACRO
mov a,@01001110b
iow PROT_I2C
ENDM
;=========================================================================
LCDDISPLAY:
CLR LCD_MAP ;FIRST MAP ADD IS 0
BS port5,CK ;/WR=1
call dly
BC port5,CS ;/CS=0
call dly
BS port5,DA ;DATA=1
call dly
BC port5,CK ;/WR=0
call dly
BS port5,CK ;/WR=1
;----------------------------------------------
call dly
Bc port5,DA ;DATA=0
call dly
BC port5,CK ;/WR=0
call dly
BS port5,CK ;/WR=1
;--------------------------------------------------------------------
call dly
Bs port5,DA ;DATA=1
call dly
BC port5,CK ;/WR=0
call dly
BS port5,CK ;/WR=1
;-------------------------------;WRITE THE
call dly
bc port5,DA ; addr0 =0
call dly
BC port5,CK ;/WR=0
call dly
BS port5,CK ;/WR=1
call dly
;----------------------------------------; addr1 =1
bs port5,DA
call dly
BC port5,CK ;/WR=0
call dly
BS port5,CK ;/WR=1
call dly
;--------------------------------------addr2 =1
bc port5,DA
call dly
BC port5,CK ;/WR=0
call dly
BS port5,CK ;/WR=1
call dly
;----------------------------------------addr3 =1
bs port5,DA
call dly
BC port5,CK ;/WR=0
call dly
BS port5,CK ;/WR=1
call dly
;---------------------------------------addr4 =1
bs port5,DA
call dly
BC port5,CK ;/WR=0
call dly
BS port5,CK ;/WR=1
call dly
;--------------------------------------addr5 =1
bc port5,DA
call dly
BC port5,CK ;/WR=0
call dly
BS port5,CK ;/WR=1
;---------------------------------------seg0
call dly
MOV A,BCDDATA3
CALL dispdatatab
MOV LCDRAM,A
CALL LCDDATA_W
;--------------------------------------SEG1
MOV A,BCDDATA3
CALL dispdatatab_2
MOV LCDRAM,A
CALL LCDDATA_W
;----------------------------------;SEG2
MOV A,BCDDATA2
CALL dispdatatab
MOV LCDRAM,A
CALL LCDDATA_W
;-------------------------------------------;SEG3
MOV A,BCDDATA2
CALL dispdatatab_2
MOV LCDRAM,A
CALL LCDDATA_W
;-----------------------------------------------;SEG4
MOV A,BCDDATA1
CALL dispdatatab
MOV LCDRAM,A
CALL LCDDATA_W
;-----------------------------------------;SEG5
nop
MOV A,BCDDATA
CALL dispdatatab_1
MOV LCDRAM,A
CALL LCDDATA_W
;--------------------------------------------
MOV A,BCDDATA1
CALL dispdatatab_2
MOV LCDRAM,A ;SEG6
CALL LCDDATA_W
BS port5,CS ;/CS=1
RET
;-----------------------------------------------
C_WRITE:
MOV A,@0X08
MOV MOVE_TIME,A
BS port5,CK ;/WR=1
call dly
BC port5,CS ;/CS=0
call dly
BC port5,CK ;/WR=0
call dly
BS port5,DA ;DATA=1
call dly
BS port5,CK ;/WR=1
call dly
BC port5,CK ;/WR=0
call dly
BC port5,DA ;DATA=0
call dly
BS port5,CK ;/WR=1
call dly
BC port5,CK ;/WR=0
call dly
BC port5,DA ;DATA=0
call dly
BS port5,CK ;/WR=1
call dly
BC port5,CK ;/WR=0
C8_C1_WRITE:
JBC COMMAND,7 ;COMMAND,7=0
JMP SET_DATA_1
BC port5,DA ;DATA=0
JMP NEXT_1
SET_DATA_1:
BS port5,DA ;DATA=1
NEXT_1:
RLC COMMAND
BS port5,CK ;/WR=1
call dly
BC port5,CK ;/WR=0
call dly
DJZ MOVE_TIME
JMP C8_C1_WRITE
BC port5,DA ;DATA=0
call dly
BS port5,CK ;/WR=1
call dly
BS port5,CS ;/CS=1
call dly
RET
;--------------------------------------
LCDDATA_W:
MOV A,@0X04 ;RAM DATA WRITE
MOV MOVE_TIME,A
lDATA_W:
JBC LCDRAM,0
JMP RAM_SET
BC port5,DA ;DATA=0
JMP NEXT_3
RAM_SET:
BS port5,DA ;DATA=1
NEXT_3:
RrC LCDRAM
Bc port5,CK ;/WR=1
call dly
Bs port5,CK ;/WR=0
call dly
DJZ MOVE_TIME
JMP lDATA_W
RET
;----------------------------------------------------------
lcdinit:
BC port5,cs ;RESET 1621 INTERFACE
call dly
BS port5,cs
call dly
BC port5,cs
call dly
call dly
MOV A,@0B11100011 ;COMMAND TNORMAL
MOV COMMAND,A
CALL C_WRITE
MOV A,@0B10000000 ;COMMAND /IRQ DIS
MOV COMMAND,A
CALL C_WRITE
MOV A,@0B00011000 ;COMMAND on chip scs
MOV COMMAND,A
CALL C_WRITE
MOV A,@0B00101011 ;COMMAND BIAS1/3,4 COM
MOV COMMAND,A
CALL C_WRITE
MOV A,@0B00001000 ;COMMAND TONE OFF
MOV COMMAND,A
CALL C_WRITE
MOV A,@0B00000101 ;COMMAND WDT DIS
MOV COMMAND,A
CALL C_WRITE
MOV A,@0B00000100 ;COMMAND TIMER DIS
MOV COMMAND,A
CALL C_WRITE
MOV A,@0B00000001 ;COMMAND SYS_EN
MOV COMMAND,A
CALL C_WRITE
MOV A,@0B00000011 ;COMMAND LCD_ON
MOV COMMAND,A
CALL C_WRITE
ret
;--------------------------------------------------------------
INIT:
wdtc
clr PORT5
clr PORT6
mov a,@0x0
iow IOC5 ;0 out 1 in
MOV A,@00001110b ;P63->P65 IS inPUT,P67->P63 IS IoutPUT
IOW IOC6
mov a,0x00
iow iocc
mov a,@0x80
iow ioce
mov a,@0x0
iow IOCF ; dis all intertupt
mov a,@0xef
contw
MOV A,@0X0
IOW IOCd ;port6 IS PULL HIGH
MOV A,@10011110b
CONTW
;---------------------------------------------------------
MOV A,@11H ;CLEAR 10H->3FH RAM ADDRESS
MOV 0X04,A
MOV A,@1eH
MOV 0X10,A
CLR 0
INC 0X04
DJZ 0X10
JMP $-3
CLR TCC ;CLEAR
ret
;-------------------------------------
dly:
nop
nop
nop
nop
nop
nop
nop
nop
nop
ret
INT_PRO:
reti
;======================================================================
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -