📄 m16.lis
字号:
0184 30E0 ldi R19,>_BCD+1
0186 0A2D mov R16,R10
0188 03D0 xcall _DisText
018A .dbline -2
018A L18:
018A 0E940000 xcall pop_gset3
018E .dbline 0 ; func end
018E 0895 ret
0190 .dbsym r i 20 c
0190 .dbsym r num 22 i
0190 .dbsym r addr 10 c
0190 .dbend
0190 .dbfunc e DisText _DisText fV
0190 ; p -> R20,R21
0190 ; addr -> R22
.even
0190 _DisText::
0190 0E940000 xcall push_gset2
0194 A901 movw R20,R18
0196 602F mov R22,R16
0198 .dbline -1
0198 .dbline 81
0198 ; }
0198 ;
0198 ; void DisText(uchar addr,uchar *p)
0198 ; {
0198 .dbline 82
0198 ; WrOp(addr) ;
0198 062F mov R16,R22
019A 3BD0 xcall _WrOp
019C 04C0 xjmp L28
019E L27:
019E .dbline 83
019E FA01 movw R30,R20
01A0 0191 ld R16,Z+
01A2 AF01 movw R20,R30
01A4 48D0 xcall _WrDat
01A6 L28:
01A6 .dbline 83
01A6 ; while(*p !='\0')WrDat(*(p++)) ;
01A6 FA01 movw R30,R20
01A8 2080 ldd R2,z+0
01AA 2220 tst R2
01AC C1F7 brne L27
01AE .dbline -2
01AE L26:
01AE 0E940000 xcall pop_gset2
01B2 .dbline 0 ; func end
01B2 0895 ret
01B4 .dbsym r p 20 pc
01B4 .dbsym r addr 22 c
01B4 .dbend
01B4 .dbfunc e DisTextConst _DisTextConst fV
01B4 ; p -> R20,R21
01B4 ; addr -> R22
.even
01B4 _DisTextConst::
01B4 0E940000 xcall push_gset2
01B8 A901 movw R20,R18
01BA 602F mov R22,R16
01BC .dbline -1
01BC .dbline 87
01BC ; }
01BC ;
01BC ; void DisTextConst(uchar addr,uchar const *p)
01BC ; {
01BC .dbline 88
01BC ; WrOp(addr) ;
01BC 062F mov R16,R22
01BE 29D0 xcall _WrOp
01C0 06C0 xjmp L32
01C2 L31:
01C2 .dbline 89
01C2 1A01 movw R2,R20
01C4 4F5F subi R20,255 ; offset = 1
01C6 5F4F sbci R21,255
01C8 F101 movw R30,R2
01CA 0491 lpm R16,Z
01CC 34D0 xcall _WrDat
01CE L32:
01CE .dbline 89
01CE ; while(*p !='\0')WrDat(*(p++)) ;
01CE FA01 movw R30,R20
01D0 E491 lpm R30,Z
01D2 EE23 tst R30
01D4 B1F7 brne L31
01D6 .dbline -2
01D6 L30:
01D6 0E940000 xcall pop_gset2
01DA .dbline 0 ; func end
01DA 0895 ret
01DC .dbsym r p 20 pkc
01DC .dbsym r addr 22 c
01DC .dbend
01DC .dbfunc e LcdIni _LcdIni fV
01DC ; i -> R20,R21
.even
01DC _LcdIni::
01DC 0E940000 xcall push_gset1
01E0 .dbline -1
01E0 .dbline 93
01E0 ; }
01E0 ;
01E0 ; void LcdIni()
01E0 ; {
01E0 .dbline 95
01E0 ; uint i ;
01E0 ; DDRD=0XFF ; //设置PA输出
01E0 8FEF ldi R24,255
01E2 81BB out 0x11,R24
01E4 .dbline 96
01E4 ; PORTD=0XFF ; //全部加上上拉电阻
01E4 82BB out 0x12,R24
01E6 .dbline 97
01E6 ; DDRC=0XFF ; //设置PC为输出
01E6 84BB out 0x14,R24
01E8 .dbline 98
01E8 ; PORTC=0XFF ; //全部加上上拉电阻
01E8 85BB out 0x15,R24
01EA .dbline 99
01EA ; WrOp(0x38) ;
01EA 08E3 ldi R16,56
01EC 12D0 xcall _WrOp
01EE .dbline 100
01EE ; WrOp(0x06) ; //光标加1
01EE 06E0 ldi R16,6
01F0 10D0 xcall _WrOp
01F2 .dbline 101
01F2 ; WrOp(0x0c) ; //开显示
01F2 0CE0 ldi R16,12
01F4 0ED0 xcall _WrOp
01F6 .dbline 102
01F6 ; WrOp(0x01) ;
01F6 01E0 ldi R16,1
01F8 0CD0 xcall _WrOp
01FA .dbline 103
01FA 4427 clr R20
01FC 5527 clr R21
01FE 02C0 xjmp L38
0200 L35:
0200 .dbline 103
0200 L36:
0200 .dbline 103
0200 4F5F subi R20,255 ; offset = 1
0202 5F4F sbci R21,255
0204 L38:
0204 .dbline 103
0204 ; for(i=0 ;i<5000 ;i++) ;
0204 4838 cpi R20,136
0206 E3E1 ldi R30,19
0208 5E07 cpc R21,R30
020A D0F3 brlo L35
020C .dbline -2
020C L34:
020C 0E940000 xcall pop_gset1
0210 .dbline 0 ; func end
0210 0895 ret
0212 .dbsym r i 20 i
0212 .dbend
0212 .dbfunc e WrOp _WrOp fV
0212 ; i -> R20
0212 ; dat -> R20
.even
0212 _WrOp::
0212 0E940000 xcall push_gset1
0216 402F mov R20,R16
0218 .dbline -1
0218 .dbline 107
0218 ; }
0218 ;
0218 ; void WrOp(uchar dat)
0218 ; {
0218 .dbline 109
0218 ; uchar i ;
0218 ; ChkBusy() ;
0218 20D0 xcall _ChkBusy
021A .dbline 110
021A ; PORTD &=~BIT(rs) ; //RS=0
021A 9298 cbi 0x12,2
021C .dbline 111
021C ; PORTD &=~BIT(rw) ; //RW=0
021C 9398 cbi 0x12,3
021E .dbline 112
021E ; PORTD &=~BIT(en) ; //EN=0
021E 9498 cbi 0x12,4
0220 .dbline 113
0220 ; PORTC =dat ; //送数据
0220 45BB out 0x15,R20
0222 .dbline 114
0222 ; PORTD |=BIT(en) ; //EN=1
0222 949A sbi 0x12,4
0224 .dbline 115
0224 41E0 ldi R20,1
0226 01C0 xjmp L43
0228 L40:
0228 .dbline 115
0228 L41:
0228 .dbline 115
0228 4395 inc R20
022A L43:
022A .dbline 115
022A ; for(i=1 ;i ;i++) ; //延时
022A 4423 tst R20
022C E9F7 brne L40
022E .dbline 116
022E ; PORTD &=~BIT(en) ; //EN=0
022E 9498 cbi 0x12,4
0230 .dbline -2
0230 L39:
0230 0E940000 xcall pop_gset1
0234 .dbline 0 ; func end
0234 0895 ret
0236 .dbsym r i 20 c
0236 .dbsym r dat 20 c
0236 .dbend
0236 .dbfunc e WrDat _WrDat fV
0236 ; i -> R20
0236 ; dat -> R20
.even
0236 _WrDat::
0236 0E940000 xcall push_gset1
023A 402F mov R20,R16
023C .dbline -1
023C .dbline 120
023C ; }
023C ;
023C ; void WrDat(uchar dat)
023C ; {
023C .dbline 122
023C ; uchar i ;
023C ; ChkBusy() ;
023C 0ED0 xcall _ChkBusy
023E .dbline 123
023E ; PORTD |=BIT(rs) ; //rs=1
023E 929A sbi 0x12,2
0240 .dbline 124
0240 ; PORTD &=~BIT(rw) ; //rw=0
0240 9398 cbi 0x12,3
0242 .dbline 125
0242 ; PORTD &=~BIT(en) ; //en=0
0242 9498 cbi 0x12,4
0244 .dbline 126
0244 ; PORTC=dat ; //送数据
0244 45BB out 0x15,R20
0246 .dbline 127
0246 ; PORTD |=BIT(en) ; //en=1
0246 949A sbi 0x12,4
0248 .dbline 128
0248 41E0 ldi R20,1
024A 01C0 xjmp L48
024C L45:
024C .dbline 128
024C L46:
024C .dbline 128
024C 4395 inc R20
024E L48:
024E .dbline 128
024E ; for(i=1 ;i ;i++) ; //延时
024E 4423 tst R20
0250 E9F7 brne L45
0252 .dbline 129
0252 ; PORTD &=~BIT(en) ; //en=0
0252 9498 cbi 0x12,4
0254 .dbline -2
0254 L44:
0254 0E940000 xcall pop_gset1
0258 .dbline 0 ; func end
0258 0895 ret
025A .dbsym r i 20 c
025A .dbsym r dat 20 c
025A .dbend
025A .dbfunc e ChkBusy _ChkBusy fV
.even
025A _ChkBusy::
025A .dbline -1
025A .dbline 133
025A ; }
025A ;
025A ; void ChkBusy()
025A ; {
025A .dbline 134
025A ; DDRC=0X00 ; //设置为输入
025A 2224 clr R2
025C 24BA out 0x14,R2
025E .dbline 135
025E ; PORTC=0X00 ; //不设置上拉电阻
025E 25BA out 0x15,R2
0260 .dbline 136
0260 ; PORTD &=~BIT(rs) ; //RS=0
0260 9298 cbi 0x12,2
0262 .dbline 137
0262 ; PORTD |=BIT(rw) ; //RW=1
0262 939A sbi 0x12,3
0264 .dbline 138
0264 ; PORTD |=BIT(en) ; //EN=1
0264 949A sbi 0x12,4
0266 L50:
0266 .dbline 139
0266 L51:
0266 .dbline 139
0266 ; while(PINC & 0x80) ; //送数据
0266 9F99 sbic 0x13,7
0268 FECF rjmp L50
026A .dbline 140
026A ; PORTD &=~BIT(en) ; //en=0
026A 9498 cbi 0x12,4
026C .dbline 141
026C ; DDRC=0xff ; //设置为输出
026C 8FEF ldi R24,255
026E 84BB out 0x14,R24
0270 .dbline -2
0270 L49:
0270 .dbline 0 ; func end
0270 0895 ret
0272 .dbend
0272 .dbfunc e delayms _delayms fV
0272 ; i -> R20,R21
0272 ; j -> R22
0272 ; n -> R16,R17
.even
0272 _delayms::
0272 0E940000 xcall push_gset2
0276 .dbline -1
0276 .dbline 145
0276 ; }
0276 ;
0276 ; void delayms(uint n)
0276 ; {
0276 .dbline 148
0276 ; uchar j ;
0276 ; uint i ;
0276 ; for(i=0 ;i<n ;i++)
0276 4427 clr R20
0278 5527 clr R21
027A 07C0 xjmp L57
027C L54:
027C .dbline 149
027C 6627 clr R22
027E 01C0 xjmp L61
0280 L58:
0280 .dbline 149
0280 L59:
0280 .dbline 149
0280 6395 inc R22
0282 L61:
0282 .dbline 149
0282 6A3F cpi R22,250
0284 E8F3 brlo L58
0286 L55:
0286 .dbline 148
0286 4F5F subi R20,255 ; offset = 1
0288 5F4F sbci R21,255
028A L57:
028A .dbline 148
028A 4017 cp R20,R16
028C 5107 cpc R21,R17
028E B0F3 brlo L54
0290 .dbline -2
0290 L53:
0290 0E940000 xcall pop_gset2
0294 .dbline 0 ; func end
0294 0895 ret
0296 .dbsym r i 20 i
0296 .dbsym r j 22 c
0296 .dbsym r n 16 i
0296 .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\PROTEU~1.7\PROTEU~1.7\JOHU\a___EWTS82\m16.c
0000 _Adc::
0000 .blkb 6
0006 .dbsym e Adc _Adc A[6:3]I
0006 _BCD::
0006 .blkb 6
000C .dbsym e BCD _BCD A[6:6]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -