📄 i2c.src
字号:
; j = j<<1 ;
; SOURCE LINE # 89
MOV R3,A
?C0016:
;
; I2C_SCL = 0;
; SOURCE LINE # 91
CLR I2C_SCL
; t_lp(t_lp_n);
; SOURCE LINE # 92
MOV R7,#02H
MOV R6,#00H
LCALL _t_lp
; }
; SOURCE LINE # 93
INC R2
CJNE R2,#08H,?C0012
?C0013:
; I2C_SDA = 1;
; SOURCE LINE # 94
SETB I2C_SDA
; I2C_SCL = 0;
; SOURCE LINE # 95
CLR I2C_SCL
; t_lp(t_lp_n);
; SOURCE LINE # 96
MOV R7,#02H
MOV R6,#00H
LCALL _t_lp
; I2C_SDA = 1;
; SOURCE LINE # 97
SETB I2C_SDA
; t_lp(t_lp_n);
; SOURCE LINE # 98
; I2C_SCL = 1;
; SOURCE LINE # 99
; t_lp(t_lp_n);
; SOURCE LINE # 100
LCALL L?0038
; I2C_SCL = 0;
; SOURCE LINE # 101
CLR I2C_SCL
; t_lp(t_lp_n);
; SOURCE LINE # 102
LCALL _t_lp
; I2C_SDA = 0;
; SOURCE LINE # 103
CLR I2C_SDA
; t_lp(t_lp_n);
; SOURCE LINE # 104
LCALL _t_lp
; I2C_STOP();
; SOURCE LINE # 105
LCALL I2C_STOP
; return j;
; SOURCE LINE # 106
MOV R7,AR3
; }
; SOURCE LINE # 107
?C0017:
RET
; END OF I2C_IN
;
;
; //I2C字节写函数,device_address器件级联地址,本硬件没有级联;word_address要写得字节的存储地址;I2C_DATA要向I2C内写的字节数据
; //写成功返回1,失败返回0
; UCHAR I2C_WRITE(UCHAR device_address,UCHAR word_address,UCHAR I2C_DATA)
RSEG ?PR?_I2C_WRITE?I2C
_I2C_WRITE:
USING 0
; SOURCE LINE # 112
MOV device_address?647,R7
MOV word_address?648,R5
MOV I2C_DATA?649,R3
; {
; SOURCE LINE # 113
; UCHAR i = 0;
; SOURCE LINE # 114
;---- Variable 'i?650' assigned to Register 'R1' ----
CLR A
MOV R1,A
; device_address = ((device_address & 0x07) << 1) | 0xa0;
; SOURCE LINE # 115
MOV A,device_address?647
ANL A,#07H
MOV R7,A
ADD A,ACC
ORL A,#0A0H
MOV device_address?647,A
?C0018:
; // I2C_WP= 0;
; while(i<3)
; SOURCE LINE # 117
MOV A,R1
CLR C
SUBB A,#03H
JNC ?C0019
; {
; SOURCE LINE # 118
; I2C_START();
; SOURCE LINE # 119
LCALL I2C_START
; if (I2C_OUT(device_address) == 1)
; SOURCE LINE # 120
MOV R7,device_address?647
LCALL _I2C_OUT
JNC ?C0020
; {
; SOURCE LINE # 121
; i++;
; SOURCE LINE # 122
INC R1
; continue ;
; SOURCE LINE # 123
SJMP ?C0018
; }
; SOURCE LINE # 124
?C0020:
;
; if (I2C_OUT(word_address) == 1)
; SOURCE LINE # 126
MOV R7,word_address?648
LCALL _I2C_OUT
JNC ?C0021
; {
; SOURCE LINE # 127
; i++;
; SOURCE LINE # 128
INC R1
; continue ;
; SOURCE LINE # 129
SJMP ?C0018
; }
; SOURCE LINE # 130
?C0021:
;
; if (I2C_OUT(I2C_DATA) == 1)
; SOURCE LINE # 132
MOV R7,I2C_DATA?649
LCALL _I2C_OUT
JNC ?C0022
; {
; SOURCE LINE # 133
; i++;
; SOURCE LINE # 134
INC R1
; continue ;
; SOURCE LINE # 135
SJMP ?C0018
; }
; SOURCE LINE # 136
?C0022:
; else
; {
; SOURCE LINE # 138
; I2C_STOP();
; SOURCE LINE # 139
LCALL I2C_STOP
; t_lp(I2C_WRITE_DELAY) ;
; SOURCE LINE # 140
MOV R7,#0FAH
MOV R6,#00H
LCALL _t_lp
; // I2C_WP= 1;
; return 1;
; SOURCE LINE # 142
MOV R7,#01H
RET
; }
; SOURCE LINE # 143
; }
; SOURCE LINE # 144
?C0019:
; return 0;
; SOURCE LINE # 145
MOV R7,#00H
; }
; SOURCE LINE # 146
?C0024:
RET
; END OF _I2C_WRITE
;
;
; //I2C字节读函数device_address器件级联地址,本硬件没有级联;word_address要读得字节的存储地址。
; //直接返回要读的地址值.
; UCHAR I2C_READ(UCHAR device_address,UCHAR word_address)
RSEG ?PR?_I2C_READ?I2C
_I2C_READ:
USING 0
; SOURCE LINE # 151
MOV device_address?751,R7
MOV word_address?752,R5
; {
; SOURCE LINE # 152
; UCHAR i = 0;
; SOURCE LINE # 153
;---- Variable 'i?753' assigned to Register 'R1' ----
CLR A
MOV R1,A
; device_address = ((device_address & 0x07) << 1) | 0xa0;
; SOURCE LINE # 154
MOV A,device_address?751
ANL A,#07H
MOV R7,A
ADD A,ACC
ORL A,#0A0H
MOV device_address?751,A
?C0025:
; while(i<3)
; SOURCE LINE # 155
MOV A,R1
CLR C
SUBB A,#03H
JNC ?C0026
; {
; SOURCE LINE # 156
; I2C_START();
; SOURCE LINE # 157
LCALL I2C_START
; if (I2C_OUT(device_address) == 1)
; SOURCE LINE # 158
MOV R7,device_address?751
LCALL _I2C_OUT
JNC ?C0027
; {
; SOURCE LINE # 159
; i++;
; SOURCE LINE # 160
INC R1
; continue ;
; SOURCE LINE # 161
SJMP ?C0025
; }
; SOURCE LINE # 162
?C0027:
;
; if(I2C_OUT(word_address) == 1)
; SOURCE LINE # 164
MOV R7,word_address?752
LCALL _I2C_OUT
JNC ?C0028
; {
; SOURCE LINE # 165
; i++;
; SOURCE LINE # 166
INC R1
; continue ;
; SOURCE LINE # 167
SJMP ?C0025
; }
; SOURCE LINE # 168
?C0028:
;
; I2C_START();
; SOURCE LINE # 170
LCALL I2C_START
; if (I2C_OUT(device_address | 0x01) == 1)
; SOURCE LINE # 171
MOV A,device_address?751
ORL A,#01H
MOV R7,A
LCALL _I2C_OUT
JNC ?C0029
; {
; SOURCE LINE # 172
; i++;
; SOURCE LINE # 173
INC R1
; continue ;
; SOURCE LINE # 174
SJMP ?C0025
; }
; SOURCE LINE # 175
?C0029:
;
; return I2C_IN();
; SOURCE LINE # 177
LJMP I2C_IN
; }
; SOURCE LINE # 178
?C0026:
; return 0;
; SOURCE LINE # 179
MOV R7,#00H
; }
; SOURCE LINE # 180
?C0030:
RET
; END OF _I2C_READ
;
; void saveConfig()
RSEG ?PR?saveConfig?I2C
saveConfig:
USING 0
; SOURCE LINE # 182
; {
; SOURCE LINE # 183
; I2C_WRITE( 0, 0, scanshu.hanghead ); //起始横坐标
; SOURCE LINE # 184
MOV R3,scanshu
CLR A
MOV R5,A
MOV R7,A
LCALL _I2C_WRITE
; I2C_WRITE( 0, 1, scanshu.liehead ); //起始纵坐标
; SOURCE LINE # 185
MOV R3,scanshu+01H
MOV R5,#01H
CLR A
MOV R7,A
LCALL _I2C_WRITE
; I2C_WRITE( 0, 2, scanshu.wide ); //标签宽度
; SOURCE LINE # 186
MOV R3,scanshu+02H
MOV R5,#02H
CLR A
MOV R7,A
LCALL _I2C_WRITE
; I2C_WRITE( 0, 3, scanshu.painum ); //打印排数
; SOURCE LINE # 187
MOV R3,scanshu+03H
MOV R5,#03H
CLR A
MOV R7,A
LCALL _I2C_WRITE
; I2C_WRITE( 0, 4, scanshu.type ); //条码类型
; SOURCE LINE # 188
MOV R3,scanshu+04H
MOV R5,#04H
CLR A
MOV R7,A
LCALL _I2C_WRITE
; I2C_WRITE( 0, 5, scanshu.comm ); //输出串口
; SOURCE LINE # 189
MOV R3,scanshu+05H
MOV R5,#05H
CLR A
MOV R7,A
LJMP _I2C_WRITE
; END OF saveConfig
; }
; void restoreConfig()
RSEG ?PR?restoreConfig?I2C
restoreConfig:
USING 0
; SOURCE LINE # 191
; {
; SOURCE LINE # 192
; scanshu.hanghead = I2C_READ(0, 0); //起始横坐标
; SOURCE LINE # 193
CLR A
MOV R5,A
MOV R7,A
LCALL _I2C_READ
MOV scanshu,R7
; scanshu.liehead = I2C_READ(0, 1); //起始纵坐标
; SOURCE LINE # 194
MOV R5,#01H
CLR A
MOV R7,A
LCALL _I2C_READ
MOV scanshu+01H,R7
; scanshu.wide = I2C_READ(0, 2); //标签宽度
; SOURCE LINE # 195
MOV R5,#02H
CLR A
MOV R7,A
LCALL _I2C_READ
MOV scanshu+02H,R7
; scanshu.painum = I2C_READ(0, 3); //打印排数
; SOURCE LINE # 196
MOV R5,#03H
CLR A
MOV R7,A
LCALL _I2C_READ
MOV scanshu+03H,R7
; scanshu.type = I2C_READ(0, 4); //条码类型
; SOURCE LINE # 197
MOV R5,#04H
CLR A
MOV R7,A
LCALL _I2C_READ
MOV scanshu+04H,R7
; scanshu.comm = I2C_READ(0, 5); //输出串口
; SOURCE LINE # 198
MOV R5,#05H
CLR A
MOV R7,A
LCALL _I2C_READ
MOV scanshu+05H,R7
; }
; SOURCE LINE # 199
RET
; END OF restoreConfig
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -