📄 adc-1602.lis
字号:
0204 .dbline 174
0204 ; t = *pBuffer;
0204 FA01 movw R30,R20
0206 A690 elpm R10,Z
0208 .dbline 175
0208 ; PORTD = t;
0208 A2BA out 0x12,R10
020A .dbline 176
020A ; PORTA|=(1<<EN);
020A DF9A sbi 0x1b,7
020C .dbline 177
020C ; s_ms(50);
020C 02E3 ldi R16,50
020E 10E0 ldi R17,0
0210 F7DE xcall _s_ms
0212 .dbline 178
0212 ; PORTA&=~(1<<EN);
0212 DF98 cbi 0x1b,7
0214 .dbline 179
0214 ; pBuffer++;
0214 4F5F subi R20,255 ; offset = 1
0216 5F4F sbci R21,255
0218 .dbline 180
0218 ; }
0218 L25:
0218 .dbline 172
0218 6395 inc R22
021A L27:
021A .dbline 172
021A 6031 cpi R22,16
021C 98F3 brlo L24
021E X4:
021E .dbline -2
021E L19:
021E .dbline 0 ; func end
021E 0C940000 xjmp pop_xgsetF00C
0222 .dbsym r t 10 c
0222 .dbsym r i 22 c
0222 .dbsym r pBuffer 20 pkc
0222 .dbend
0222 .dbfunc e WriteNum _WriteNum fV
0222 ; num -> R20,R21
0222 ; col -> R10,R11
0222 ; row -> R22,R23
.even
0222 _WriteNum::
0222 0E940000 xcall push_xgsetF00C
0226 5901 movw R10,R18
0228 B801 movw R22,R16
022A 4E81 ldd R20,y+6
022C 5F81 ldd R21,y+7
022E .dbline -1
022E .dbline 190
022E ; }
022E ; //====================================================
022E ; // 描述:在任意位置写数字函数
022E ; // 入口:’row‘表示要写数字所在的行地址,只能为1或2
022E ; // ’col‘表示要写数字所在的列地址,只能为0--15
022E ; // ‘num’表示要写的数字,只能为0--9
022E ; // 出口:无
022E ; //===================================================
022E ; void WriteNum(uint row,uint col,uint num)
022E ; {
022E .dbline 191
022E ; if (row == 1) row = 0x80 + col;
022E 6130 cpi R22,1
0230 E0E0 ldi R30,0
0232 7E07 cpc R23,R30
0234 21F4 brne L29
0236 X5:
0236 .dbline 191
0236 B501 movw R22,R10
0238 6058 subi R22,128 ; offset = 128
023A 7F4F sbci R23,255
023C 03C0 xjmp L30
023E L29:
023E .dbline 192
023E ; else row = 0xC0 + col;
023E B501 movw R22,R10
0240 6054 subi R22,64 ; offset = 192
0242 7F4F sbci R23,255
0244 L30:
0244 .dbline 193
0244 ; writecom(row);
0244 062F mov R16,R22
0246 10DF xcall _writecom
0248 .dbline 194
0248 ; if (num<=0 | num>9) num =0x30;
0248 4030 cpi R20,0
024A 4507 cpc R20,R21
024C 21F4 brne L33
024E X6:
024E 81E0 ldi R24,1
0250 90E0 ldi R25,0
0252 5C01 movw R10,R24
0254 02C0 xjmp L34
0256 L33:
0256 AA24 clr R10
0258 BB24 clr R11
025A L34:
025A 89E0 ldi R24,9
025C 90E0 ldi R25,0
025E 8417 cp R24,R20
0260 9507 cpc R25,R21
0262 18F4 brsh L35
0264 X7:
0264 61E0 ldi R22,1
0266 70E0 ldi R23,0
0268 02C0 xjmp L36
026A L35:
026A 6627 clr R22
026C 7727 clr R23
026E L36:
026E 1501 movw R2,R10
0270 262A or R2,R22
0272 372A or R3,R23
0274 2220 tst R2
0276 11F4 brne X8
0278 3320 tst R3
027A 19F0 breq L31
027C X8:
027C .dbline 194
027C 40E3 ldi R20,48
027E 50E0 ldi R21,0
0280 02C0 xjmp L32
0282 L31:
0282 .dbline 195
0282 ; else num = 0x30 + num;
0282 405D subi R20,208 ; offset = 48
0284 5F4F sbci R21,255
0286 L32:
0286 .dbline 197
0286 ;
0286 ; PORTA|=(1<<RS);
0286 DD9A sbi 0x1b,5
0288 .dbline 198
0288 ; s_ms(500);
0288 04EF ldi R16,500
028A 11E0 ldi R17,1
028C B9DE xcall _s_ms
028E .dbline 199
028E ; PORTA&=~(1<<RW);
028E DE98 cbi 0x1b,6
0290 .dbline 200
0290 ; s_ms(500);
0290 04EF ldi R16,500
0292 11E0 ldi R17,1
0294 B5DE xcall _s_ms
0296 .dbline 201
0296 ; PORTD = num;
0296 42BB out 0x12,R20
0298 .dbline 202
0298 ; s_ms(500);
0298 04EF ldi R16,500
029A 11E0 ldi R17,1
029C B1DE xcall _s_ms
029E .dbline 203
029E ; PORTA|=(1<<EN);
029E DF9A sbi 0x1b,7
02A0 .dbline 204
02A0 ; s_ms(500);
02A0 04EF ldi R16,500
02A2 11E0 ldi R17,1
02A4 ADDE xcall _s_ms
02A6 .dbline 205
02A6 ; PORTA&=~(1<<EN);
02A6 DF98 cbi 0x1b,7
02A8 .dbline 206
02A8 ; s_ms(500);
02A8 04EF ldi R16,500
02AA 11E0 ldi R17,1
02AC A9DE xcall _s_ms
02AE .dbline -2
02AE L28:
02AE .dbline 0 ; func end
02AE 0C940000 xjmp pop_xgsetF00C
02B2 .dbsym r num 20 i
02B2 .dbsym r col 10 i
02B2 .dbsym r row 22 i
02B2 .dbend
02B2 .dbfunc e WriteChar _WriteChar fV
02B2 ; t -> R12
02B2 ; i -> R10
02B2 ; pBuffer -> R20,R21
02B2 ; num -> y+8
02B2 ; col -> R10
02B2 ; row -> R22
.even
02B2 _WriteChar::
02B2 0E940000 xcall push_xgsetF03C
02B6 A22E mov R10,R18
02B8 602F mov R22,R16
02BA 4A85 ldd R20,y+10
02BC 5B85 ldd R21,y+11
02BE .dbline -1
02BE .dbline 216
02BE ; }
02BE ; //================================================================
02BE ; // 描述:在任意位置写任意多个字符
02BE ; // 入口:’row‘要写的字符所在的行,只能为1或2;
02BE ; // ‘col’要写的字符所在的列,只能为0---15
02BE ; // ‘num’要写字符的个数
02BE ; // ‘pbuffer’要写字符的首地址
02BE ; //==================================================================
02BE ; void WriteChar(uchar row,uchar col,uint num,uchar *pBuffer)
02BE ; {
02BE .dbline 218
02BE ; uchar i,t;
02BE ; if (row == 1) row = 0x80 + col;
02BE 6130 cpi R22,1
02C0 19F4 brne L38
02C2 X9:
02C2 .dbline 218
02C2 6A2D mov R22,R10
02C4 6058 subi R22,128 ; addi 128
02C6 02C0 xjmp L39
02C8 L38:
02C8 .dbline 219
02C8 ; else row = 0xC0 + col;
02C8 6A2D mov R22,R10
02CA 6054 subi R22,64 ; addi 192
02CC L39:
02CC .dbline 220
02CC ; writecom(row);
02CC 062F mov R16,R22
02CE CCDE xcall _writecom
02D0 .dbline 224
02D0 ; //if (num<=0 | num>9) num =0x30;
02D0 ; //else num = 0x30 + num;
02D0 ;
02D0 ; PORTA|=(1<<RS);
02D0 DD9A sbi 0x1b,5
02D2 .dbline 225
02D2 ; s_ms(500);
02D2 04EF ldi R16,500
02D4 11E0 ldi R17,1
02D6 94DE xcall _s_ms
02D8 .dbline 226
02D8 ; PORTA&=~(1<<RW);
02D8 DE98 cbi 0x1b,6
02DA .dbline 227
02DA ; s_ms(500);
02DA 04EF ldi R16,500
02DC 11E0 ldi R17,1
02DE 90DE xcall _s_ms
02E0 .dbline 228
02E0 ; for(i=num;i!=0;i--)
02E0 A884 ldd R10,y+8
02E2 14C0 xjmp L43
02E4 L40:
02E4 .dbline 229
02E4 ; {
02E4 .dbline 230
02E4 ; t = *pBuffer;
02E4 FA01 movw R30,R20
02E6 C080 ldd R12,z+0
02E8 .dbline 231
02E8 ; s_ms(500);
02E8 04EF ldi R16,500
02EA 11E0 ldi R17,1
02EC 89DE xcall _s_ms
02EE .dbline 232
02EE ; PORTD = t;
02EE C2BA out 0x12,R12
02F0 .dbline 233
02F0 ; s_ms(500);
02F0 04EF ldi R16,500
02F2 11E0 ldi R17,1
02F4 85DE xcall _s_ms
02F6 .dbline 234
02F6 ; PORTA|=(1<<EN);
02F6 DF9A sbi 0x1b,7
02F8 .dbline 235
02F8 ; s_ms(500);
02F8 04EF ldi R16,500
02FA 11E0 ldi R17,1
02FC 81DE xcall _s_ms
02FE .dbline 236
02FE ; PORTA&=~(1<<EN);
02FE DF98 cbi 0x1b,7
0300 .dbline 237
0300 ; s_ms(500);
0300 04EF ldi R16,500
0302 11E0 ldi R17,1
0304 7DDE xcall _s_ms
0306 .dbline 238
0306 ; pBuffer++;
0306 4F5F subi R20,255 ; offset = 1
0308 5F4F sbci R21,255
030A .dbline 239
030A ; }
030A L41:
030A .dbline 228
030A AA94 dec R10
030C L43:
030C .dbline 228
030C AA20 tst R10
030E 51F7 brne L40
0310 X10:
0310 .dbline -2
0310 L37:
0310 .dbline 0 ; func end
0310 0C940000 xjmp pop_xgsetF03C
0314 .dbsym r t 12 c
0314 .dbsym r i 10 c
0314 .dbsym r pBuffer 20 pc
0314 .dbsym l num 8 i
0314 .dbsym r col 10 c
0314 .dbsym r row 22 c
0314 .dbend
.area data(ram, con, rel)
0000 .dbfile D:\16实验程序\模数转换\adc_1602\1602.h
0000 _adc_0::
0000 .blkb 12
.area idata
0000 4144435F303A202E20205600 .byte 'A,'D,'C,95,48,58,32,46,32,32,'V,0
.area data(ram, con, rel)
000C .dbfile D:\16实验程序\模数转换\adc_1602\1602.h
000C .dbfile D:\16实验程序\模数转换\adc_1602\ADC-1602.c
000C .dbsym e adc_0 _adc_0 A[12:12]c
000C _adc_1::
000C .blkb 12
.area idata
000C 4144435F313A202E20205600 .byte 'A,'D,'C,95,49,58,32,46,32,32,'V,0
.area data(ram, con, rel)
0018 .dbfile D:\16实验程序\模数转换\adc_1602\ADC-1602.c
0018 .dbsym e adc_1 _adc_1 A[12:12]c
.area text(rom, con, rel)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -