📄 iic_master.s
字号:
nop
.dbline 200
nop
.dbline 200
nop
.dbline 200
nop
.dbline 200
nop
.dbline 200
nop
.dbline 200
nop
.dbline 200
nop
.dbline 200
nop
.dbline 200
nop
.dbline 200
nop
.dbline 200
.dbline 201
; IIC_delay();
nop
.dbline 201
nop
.dbline 201
nop
.dbline 201
nop
.dbline 201
nop
.dbline 201
nop
.dbline 201
nop
.dbline 201
nop
.dbline 201
nop
.dbline 201
nop
.dbline 201
nop
.dbline 201
nop
.dbline 201
nop
.dbline 201
nop
.dbline 201
nop
.dbline 201
nop
.dbline 201
.dbline 202
; IIC_SCL_L;
cbi 0x15,0
.dbline -2
L26:
.dbline 0 ; func end
ret
.dbend
.dbfunc e IIC_NO_ACK _IIC_NO_ACK fV
.even
_IIC_NO_ACK::
.dbline -1
.dbline 214
; }
;
; /*********************************************************************************************************
; ** 函数名称: IIC_NO_ACK
; ** 功能描述: 发送IIC无应答信号
; ** 输 入: 无
; ** 输 出: 无
; ** 全局变量: 无
; ** 调用模块: 无
; ********************************************************************************************************/
; void IIC_NO_ACK(void)
; {
.dbline 215
; IIC_SDA_I;
cbi 0x14,1
.dbline 216
; IIC_SDA_H;
sbi 0x15,1
.dbline 217
; IIC_delay();
nop
.dbline 217
nop
.dbline 217
nop
.dbline 217
nop
.dbline 217
nop
.dbline 217
nop
.dbline 217
nop
.dbline 217
nop
.dbline 217
nop
.dbline 217
nop
.dbline 217
nop
.dbline 217
nop
.dbline 217
nop
.dbline 217
nop
.dbline 217
nop
.dbline 217
nop
.dbline 217
.dbline 218
; IIC_delay();
nop
.dbline 218
nop
.dbline 218
nop
.dbline 218
nop
.dbline 218
nop
.dbline 218
nop
.dbline 218
nop
.dbline 218
nop
.dbline 218
nop
.dbline 218
nop
.dbline 218
nop
.dbline 218
nop
.dbline 218
nop
.dbline 218
nop
.dbline 218
nop
.dbline 218
nop
.dbline 218
.dbline 219
; IIC_SCL_H;
sbi 0x15,0
.dbline 220
; IIC_delay();
nop
.dbline 220
nop
.dbline 220
nop
.dbline 220
nop
.dbline 220
nop
.dbline 220
nop
.dbline 220
nop
.dbline 220
nop
.dbline 220
nop
.dbline 220
nop
.dbline 220
nop
.dbline 220
nop
.dbline 220
nop
.dbline 220
nop
.dbline 220
nop
.dbline 220
nop
.dbline 220
.dbline 221
; IIC_delay();
nop
.dbline 221
nop
.dbline 221
nop
.dbline 221
nop
.dbline 221
nop
.dbline 221
nop
.dbline 221
nop
.dbline 221
nop
.dbline 221
nop
.dbline 221
nop
.dbline 221
nop
.dbline 221
nop
.dbline 221
nop
.dbline 221
nop
.dbline 221
nop
.dbline 221
nop
.dbline 221
.dbline 222
; IIC_delay();
nop
.dbline 222
nop
.dbline 222
nop
.dbline 222
nop
.dbline 222
nop
.dbline 222
nop
.dbline 222
nop
.dbline 222
nop
.dbline 222
nop
.dbline 222
nop
.dbline 222
nop
.dbline 222
nop
.dbline 222
nop
.dbline 222
nop
.dbline 222
nop
.dbline 222
nop
.dbline 222
.dbline 223
; IIC_delay();
nop
.dbline 223
nop
.dbline 223
nop
.dbline 223
nop
.dbline 223
nop
.dbline 223
nop
.dbline 223
nop
.dbline 223
nop
.dbline 223
nop
.dbline 223
nop
.dbline 223
nop
.dbline 223
nop
.dbline 223
nop
.dbline 223
nop
.dbline 223
nop
.dbline 223
nop
.dbline 223
.dbline 224
; IIC_SCL_L;
cbi 0x15,0
.dbline 225
; return;
.dbline -2
L27:
.dbline 0 ; func end
ret
.dbend
.dbfunc e IICSend _IICSend fc
; temp -> <dead>
; i -> R20
; IIC_data -> R16
.even
_IICSend::
xcall push_gset1
.dbline -1
.dbline 238
; }
;
; /*********************************************************************************************************
; ** 函数名称: IICSend
; ** 功能描述: 发送一个字节
; ** 输 入: IIC_data:数据
; ** 输 出: TRUE:成功
; ** FALSE:失败
; ** 全局变量: 无
; ** 调用模块: 无
; ********************************************************************************************************/
; uchar IICSend(uchar IIC_data)
; {
.dbline 242
; uchar i;
; uchar temp;
;
; IIC_SDA_O;
sbi 0x14,1
.dbline 243
; for (i = 0; i < 8; i++)
clr R20
xjmp L32
L29:
.dbline 244
; {
.dbline 245
; if(IIC_data & 0x80)
sbrs R16,7
rjmp L33
.dbline 246
; {
.dbline 247
; IIC_SDA_H;
sbi 0x15,1
.dbline 248
; }else
xjmp L34
L33:
.dbline 249
; {
.dbline 250
; IIC_SDA_L;
cbi 0x15,1
.dbline 251
; }
L34:
.dbline 252
sbi 0x15,0
.dbline 253
nop
.dbline 253
nop
.dbline 253
nop
.dbline 253
nop
.dbline 253
nop
.dbline 253
nop
.dbline 253
nop
.dbline 253
nop
.dbline 253
nop
.dbline 253
nop
.dbline 253
nop
.dbline 253
nop
.dbline 253
nop
.dbline 253
nop
.dbline 253
nop
.dbline 253
nop
.dbline 253
.dbline 254
nop
.dbline 254
nop
.dbline 254
nop
.dbline 254
nop
.dbline 254
nop
.dbline 254
nop
.dbline 254
nop
.dbline 254
nop
.dbline 254
nop
.dbline 254
nop
.dbline 254
nop
.dbline 254
nop
.dbline 254
nop
.dbline 254
nop
.dbline 254
nop
.dbline 254
nop
.dbline 254
.dbline 255
cbi 0x15,0
.dbline 256
lsl R16
.dbline 257
L30:
.dbline 243
inc R20
L32:
.dbline 243
cpi R20,8
brsh X0
xjmp L29
X0:
.dbline 258
; IIC_SCL_H;
; IIC_delay();
; IIC_delay();
; IIC_SCL_L;
; IIC_data <<= 1;
; }
; IIC_SDA_I;
cbi 0x14,1
.dbline 259
; IIC_SDA_H;
sbi 0x15,1
.dbline 260
; IIC_delay();
nop
.dbline 260
nop
.dbline 260
nop
.dbline 260
nop
.dbline 260
nop
.dbline 260
nop
.dbline 260
nop
.dbline 260
nop
.dbline 260
nop
.dbline 260
nop
.dbline 260
nop
.dbline 260
nop
.dbline 260
nop
.dbline 260
nop
.dbline 260
nop
.dbline 260
nop
.dbline 260
.dbline 261
; IIC_delay();
nop
.dbline 261
nop
.dbline 261
nop
.dbline 261
nop
.dbline 261
nop
.dbline 261
nop
.dbline 261
nop
.dbline 261
nop
.dbline 261
nop
.dbline 261
nop
.dbline 261
nop
.dbline 261
nop
.dbline 261
nop
.dbline 261
nop
.dbline 261
nop
.dbline 261
nop
.dbline 261
.dbline 262
; IIC_SCL_H;
sbi 0x15,0
.dbline 263
; IIC_delay();
nop
.dbline 263
nop
.dbline 263
nop
.dbline 263
nop
.dbline 263
nop
.dbline 263
nop
.dbline 263
nop
.dbline 263
nop
.dbline 263
nop
.dbline 263
nop
.dbline 263
nop
.dbline 263
nop
.dbline 263
nop
.dbline 263
nop
.dbline 263
nop
.dbline 263
nop
.dbline 263
.dbline 264
; IIC_delay();
nop
.dbline 264
nop
.dbline 264
nop
.dbline 264
nop
.dbline 264
nop
.dbline 264
nop
.dbline 264
nop
.dbline 264
nop
.dbline 264
nop
.dbline 264
nop
.dbline 264
nop
.dbline 264
nop
.dbline 264
nop
.dbline 264
nop
.dbline 264
nop
.dbline 264
nop
.dbline 264
.dbline 265
; if (IIC_DATA)
sbis 0x13,1
rjmp L35
.dbline 266
; {
.dbline 267
; IIC_SCL_L;
cbi 0x15,0
.dbline 268
; return FALSE;
ldi R16,2
xjmp L28
L35:
.dbline 271
; }
; else
; {
.dbline 272
; IIC_SCL_L;
cbi 0x15,0
.dbline 273
; return TRUE;
ldi R16,1
.dbline -2
L28:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym l temp 1 c
.dbsym r i 20 c
.dbsym r IIC_data 16 c
.dbend
.dbfunc e IICReceive _IICReceive fc
; i -> R16
; r -> R18
.even
_IICReceive::
.dbline -1
.dbline 286
; }
; }
;
; /*********************************************************************************************************
; ** 函数名称: IICReceive
; ** 功能描述: 读取一个字节
; ** 输 入: 无
; ** 输 出: 读取的字节
; ** 全局变量: 无
; ** 调用模块: 无
; ********************************************************************************************************/
; uchar IICReceive(void)
; {
.dbline 289
; uchar i,r;
;
; r = 0;
clr R18
.dbline 290
; IIC_SDA_I;
cbi 0x14,1
.dbline 291
; IIC_SDA_H;
sbi 0x15,1
.dbline 292
; for (i = 0; i < 8; i++)
clr R16
xjmp L41
L38:
.dbline 293
; {
.dbline 294
; r = r * 2;
ldi R24,2
mul R24,R18
mov R18,R0
.dbline 295
; IIC_SCL_H;
sbi 0x15,0
.dbline 296
; IIC_delay();
nop
.dbline 296
nop
.dbline 296
nop
.dbline 296
nop
.dbline 296
nop
.dbline 296
nop
.dbline 296
nop
.dbline 296
nop
.dbline 296
nop
.dbline 296
nop
.dbline 296
nop
.dbline 296
nop
.dbline 296
nop
.dbline 296
nop
.dbline 296
nop
.dbline 296
nop
.dbline 296
.dbline 297
; IIC_delay();
nop
.dbline 297
nop
.dbline 297
nop
.dbline 297
nop
.dbline 297
nop
.dbline 297
nop
.dbline 297
nop
.dbline 297
nop
.dbline 297
nop
.dbline 297
nop
.dbline 297
nop
.dbline 297
nop
.dbline 297
nop
.dbline 297
nop
.dbline 297
nop
.dbline 297
nop
.dbline 297
.dbline 298
; if (IIC_DATA)
sbis 0x13,1
rjmp L42
.dbline 299
; {
.dbline 300
; r++;
inc R18
.dbline 301
; }
L42:
.dbline 302
cbi 0x15,0
.dbline 303
L39:
.dbline 292
inc R16
L41:
.dbline 292
cpi R16,8
brsh X1
xjmp L38
X1:
.dbline 304
; IIC_SCL_L;
; }
; return r;
mov R16,R18
.dbline -2
L37:
.dbline 0 ; func end
ret
.dbsym r i 16 c
.dbsym r r 18 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -