📄 1602_main.lis
字号:
01FC L27:
01FC .dbline 167
01FC 6031 cpi R22,16
01FE 98F3 brlo L24
0200 X4:
0200 .dbline -2
0200 L19:
0200 .dbline 0 ; func end
0200 0C940000 xjmp pop_xgsetF00C
0204 .dbsym r t 10 c
0204 .dbsym r i 22 c
0204 .dbsym r pBuffer 20 pkc
0204 .dbend
0204 .dbfunc e WriteNum _WriteNum fV
0204 ; num -> R20,R21
0204 ; col -> R10,R11
0204 ; row -> R22,R23
.even
0204 _WriteNum::
0204 0E940000 xcall push_xgsetF00C
0208 5901 movw R10,R18
020A B801 movw R22,R16
020C 4E81 ldd R20,y+6
020E 5F81 ldd R21,y+7
0210 .dbline -1
0210 .dbline 185
0210 ; }
0210 ; //====================================================
0210 ; // 描述:在任意位置写数字函数
0210 ; // 入口:’row‘表示要写数字所在的行地址,只能为1或2
0210 ; // ’col‘表示要写数字所在的列地址,只能为0--15
0210 ; // ‘num’表示要写的数字,只能为0--9
0210 ; // 出口:无
0210 ; //===================================================
0210 ; void WriteNum(uint row,uint col,uint num)
0210 ; {
0210 .dbline 186
0210 ; if (row == 1) row = 0x80 + col;
0210 6130 cpi R22,1
0212 E0E0 ldi R30,0
0214 7E07 cpc R23,R30
0216 21F4 brne L29
0218 X5:
0218 .dbline 186
0218 B501 movw R22,R10
021A 6058 subi R22,128 ; offset = 128
021C 7F4F sbci R23,255
021E 03C0 xjmp L30
0220 L29:
0220 .dbline 187
0220 ; else row = 0xC0 + col;
0220 B501 movw R22,R10
0222 6054 subi R22,64 ; offset = 192
0224 7F4F sbci R23,255
0226 L30:
0226 .dbline 188
0226 ; writecom(row);
0226 062F mov R16,R22
0228 1CDF xcall _writecom
022A .dbline 189
022A ; if (num<=0 | num>9) num =0x30;
022A 4030 cpi R20,0
022C 4507 cpc R20,R21
022E 21F4 brne L33
0230 X6:
0230 81E0 ldi R24,1
0232 90E0 ldi R25,0
0234 5C01 movw R10,R24
0236 02C0 xjmp L34
0238 L33:
0238 AA24 clr R10
023A BB24 clr R11
023C L34:
023C 89E0 ldi R24,9
023E 90E0 ldi R25,0
0240 8417 cp R24,R20
0242 9507 cpc R25,R21
0244 18F4 brsh L35
0246 X7:
0246 61E0 ldi R22,1
0248 70E0 ldi R23,0
024A 02C0 xjmp L36
024C L35:
024C 6627 clr R22
024E 7727 clr R23
0250 L36:
0250 1501 movw R2,R10
0252 262A or R2,R22
0254 372A or R3,R23
0256 2220 tst R2
0258 11F4 brne X8
025A 3320 tst R3
025C 19F0 breq L31
025E X8:
025E .dbline 189
025E 40E3 ldi R20,48
0260 50E0 ldi R21,0
0262 02C0 xjmp L32
0264 L31:
0264 .dbline 190
0264 ; else num = 0x30 + num;
0264 405D subi R20,208 ; offset = 48
0266 5F4F sbci R21,255
0268 L32:
0268 .dbline 192
0268 ;
0268 ; PORTB|=(1<<RS);
0268 C59A sbi 0x18,5
026A .dbline 193
026A ; s_ms(20);
026A 04E1 ldi R16,20
026C 10E0 ldi R17,0
026E C8DE xcall _s_ms
0270 .dbline 194
0270 ; PORTB&=~(1<<RW);
0270 C698 cbi 0x18,6
0272 .dbline 195
0272 ; s_ms(20);
0272 04E1 ldi R16,20
0274 10E0 ldi R17,0
0276 C4DE xcall _s_ms
0278 .dbline 196
0278 ; PORTA = num;
0278 4BBB out 0x1b,R20
027A .dbline 197
027A ; s_ms(20);
027A 04E1 ldi R16,20
027C 10E0 ldi R17,0
027E C0DE xcall _s_ms
0280 .dbline 198
0280 ; PORTB|=(1<<EN);
0280 C79A sbi 0x18,7
0282 .dbline 199
0282 ; s_ms(20);
0282 04E1 ldi R16,20
0284 10E0 ldi R17,0
0286 BCDE xcall _s_ms
0288 .dbline 200
0288 ; PORTB&=~(1<<EN);
0288 C798 cbi 0x18,7
028A .dbline 201
028A ; s_ms(20);
028A 04E1 ldi R16,20
028C 10E0 ldi R17,0
028E B8DE xcall _s_ms
0290 .dbline -2
0290 L28:
0290 .dbline 0 ; func end
0290 0C940000 xjmp pop_xgsetF00C
0294 .dbsym r num 20 i
0294 .dbsym r col 10 i
0294 .dbsym r row 22 i
0294 .dbend
0294 .dbfunc e WriteChar _WriteChar fV
0294 ; t -> R12
0294 ; i -> R10
0294 ; pBuffer -> R20,R21
0294 ; num -> y+8
0294 ; col -> R10
0294 ; row -> R22
.even
0294 _WriteChar::
0294 0E940000 xcall push_xgsetF03C
0298 A22E mov R10,R18
029A 602F mov R22,R16
029C 4A85 ldd R20,y+10
029E 5B85 ldd R21,y+11
02A0 .dbline -1
02A0 .dbline 211
02A0 ; }
02A0 ; //================================================================
02A0 ; // 描述:在任意位置写任意多个字符
02A0 ; // 入口:’row‘要写的字符所在的行,只能为1或2;
02A0 ; // ‘col’要写的字符所在的列,只能为0---15
02A0 ; // ‘num’要写字符的个数
02A0 ; // ‘pbuffer’要写字符的首地址
02A0 ; //==================================================================
02A0 ; void WriteChar(uchar row,uchar col,uchar num,uchar *pBuffer)
02A0 ; {
02A0 .dbline 213
02A0 ; uchar i,t;
02A0 ; if (row == 1) row = 0x80 + col;
02A0 6130 cpi R22,1
02A2 19F4 brne L38
02A4 X9:
02A4 .dbline 213
02A4 6A2D mov R22,R10
02A6 6058 subi R22,128 ; addi 128
02A8 02C0 xjmp L39
02AA L38:
02AA .dbline 214
02AA ; else row = 0xC0 + col;
02AA 6A2D mov R22,R10
02AC 6054 subi R22,64 ; addi 192
02AE L39:
02AE .dbline 215
02AE ; writecom(row);
02AE 062F mov R16,R22
02B0 D8DE xcall _writecom
02B2 .dbline 219
02B2 ; //if (num<=0 | num>9) num =0x30;
02B2 ; //else num = 0x30 + num;
02B2 ;
02B2 ; PORTB|=(1<<RS);
02B2 C59A sbi 0x18,5
02B4 .dbline 220
02B4 ; s_ms(20);
02B4 04E1 ldi R16,20
02B6 10E0 ldi R17,0
02B8 A3DE xcall _s_ms
02BA .dbline 221
02BA ; PORTB&=~(1<<RW);
02BA C698 cbi 0x18,6
02BC .dbline 222
02BC ; s_ms(20);
02BC 04E1 ldi R16,20
02BE 10E0 ldi R17,0
02C0 9FDE xcall _s_ms
02C2 .dbline 223
02C2 ; for(i=num;i!=0;i--)
02C2 A884 ldd R10,y+8
02C4 14C0 xjmp L43
02C6 L40:
02C6 .dbline 224
02C6 ; {
02C6 .dbline 225
02C6 ; t = *pBuffer;
02C6 FA01 movw R30,R20
02C8 C080 ldd R12,z+0
02CA .dbline 226
02CA ; s_ms(20);
02CA 04E1 ldi R16,20
02CC 10E0 ldi R17,0
02CE 98DE xcall _s_ms
02D0 .dbline 227
02D0 ; PORTA = t;
02D0 CBBA out 0x1b,R12
02D2 .dbline 228
02D2 ; s_ms(20);
02D2 04E1 ldi R16,20
02D4 10E0 ldi R17,0
02D6 94DE xcall _s_ms
02D8 .dbline 229
02D8 ; PORTB|=(1<<EN);
02D8 C79A sbi 0x18,7
02DA .dbline 230
02DA ; s_ms(20);
02DA 04E1 ldi R16,20
02DC 10E0 ldi R17,0
02DE 90DE xcall _s_ms
02E0 .dbline 231
02E0 ; PORTB&=~(1<<EN);
02E0 C798 cbi 0x18,7
02E2 .dbline 232
02E2 ; s_ms(20);
02E2 04E1 ldi R16,20
02E4 10E0 ldi R17,0
02E6 8CDE xcall _s_ms
02E8 .dbline 233
02E8 ; pBuffer++;
02E8 4F5F subi R20,255 ; offset = 1
02EA 5F4F sbci R21,255
02EC .dbline 234
02EC ; }
02EC L41:
02EC .dbline 223
02EC AA94 dec R10
02EE L43:
02EE .dbline 223
02EE AA20 tst R10
02F0 51F7 brne L40
02F2 X10:
02F2 .dbline -2
02F2 L37:
02F2 .dbline 0 ; func end
02F2 0C940000 xjmp pop_xgsetF03C
02F6 .dbsym r t 12 c
02F6 .dbsym r i 10 c
02F6 .dbsym r pBuffer 20 pc
02F6 .dbsym l num 8 c
02F6 .dbsym r col 10 c
02F6 .dbsym r row 22 c
02F6 .dbend
.area data(ram, con, rel)
0000 .dbfile D:\我的资源\我的文件\电子技术\AVR\AVR学习\JASON'~2\M16频率计(10K-5MHz,误差0.1%以下)(已验证)\1602.h
0000 _F::
0000 .blkb 3
.area idata
0000 463D00 .byte 'F,61,0
.area data(ram, con, rel)
0003 .dbfile D:\我的资源\我的文件\电子技术\AVR\AVR学习\JASON'~2\M16频率计(10K-5MHz,误差0.1%以下)(已验证)\1602.h
0003 .dbfile D:\我的资源\我的文件\电子技术\AVR\AVR学习\JASON'~2\M16频率计(10K-5MHz,误差0.1%以下)(已验证)\1602_main.c
0003 .dbsym e F _F A[3:3]c
0003 _Hz::
0003 .blkb 3
.area idata
0003 487A00 .byte 'H,'z,0
.area data(ram, con, rel)
0006 .dbfile D:\我的资源\我的文件\电子技术\AVR\AVR学习\JASON'~2\M16频率计(10K-5MHz,误差0.1%以下)(已验证)\1602_main.c
0006 .dbsym e Hz _Hz A[3:3]c
0006 _T::
0006 .blkb 3
.area idata
0006 543D00 .byte 'T,61,0
.area data(ram, con, rel)
0009 .dbfile D:\我的资源\我的文件\电子技术\AVR\AVR学习\JASON'~2\M16频率计(10K-5MHz,误差0.1%以下)(已验证)\1602_main.c
0009 .dbsym e T _T A[3:3]c
0009 _S::
0009 .blkb 2
.area idata
0009 5300 .byte 'S,0
.area data(ram, con, rel)
000B .dbfile D:\我的资源\我的文件\电子技术\AVR\AVR学习\JASON'~2\M16频率计(10K-5MHz,误差0.1%以下)(已验证)\1602_main.c
000B .dbsym e S _S A[2:2]c
000B _uS::
000B .blkb 3
.area idata
000B 755300 .byte 'u,'S,0
.area data(ram, con, rel)
000E .dbfile D:\我的资源\我的文件\电子技术\AVR\AVR学习\JASON'~2\M16频率计(10K-5MHz,误差0.1%以下)(已验证)\1602_main.c
000E .dbsym e uS _uS A[3:3]c
000E _dot::
000E .blkb 2
.area idata
000E 2E00 .byte 46,0
.area data(ram, con, rel)
0010 .dbfile D:\我的资源\我的文件\电子技术\AVR\AVR学习\JASON'~2\M16频率计(10K-5MHz,误差0.1%以下)(已验证)\1602_main.c
0010 .dbsym e dot _dot A[2:2]c
.area text(rom, con, rel)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -