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