⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcddrive.lis

📁 AVR-MEGA8单片机中使用AD转换的一个例子
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0206 0895              ret
 0208                   .dbsym l HH 1 i
 0208                   .dbsym l LASC 4 c
 0208                   .dbsym l HASC 2 c
 0208                   .dbsym r y 12 c
 0208                   .dbsym r x 10 c
 0208                   .dbend
 0208                   .dbfunc e PrintS _PrintS fV
 0208           ;             Ty -> R10
 0208           ;             Tx -> R20
 0208           ;              i -> R22
 0208           ;            str -> R12,R13
 0208           ;              y -> R20
 0208           ;              x -> R14
                        .even
 0208           _PrintS::
 0208 00D0              rcall push_xgsetF0FC
 020A 422F              mov R20,R18
 020C E02E              mov R14,R16
 020E 2397              sbiw R28,3
 0210 CD84              ldd R12,y+13
 0212 DE84              ldd R13,y+14
 0214                   .dbline -1
 0214                   .dbline 180
 0214           ; }
 0214           ; 
 0214           ; //**************************************在指定位置处打印ASCII字符串**********************************
 0214           ; //x:串首字符在LCD屏幕上列的位置(水平位置) 0<=x<=7  
 0214           ; //y:串首字符在LCD屏幕上行的位置(垂直位置) 0<=y<=3 
 0214           ; //*str:存放ASCII字符串的指针
 0214           ; void PrintS(uchar x,uchar y,uchar *str)               //在指定位置打印字符串
 0214           ; {
 0214                   .dbline 183
 0214           ;       uchar i,Tx,Ty;
 0214           ; //    EA=0;
 0214           ;       Ty=y;Tx=x;
 0214 A42E              mov R10,R20
 0216                   .dbline 183
 0216 4E2D              mov R20,R14
 0218                   .dbline 184
 0218           ;       for(i=0;str[i]!='\0';i=i+2)
 0218 6627              clr R22
 021A 15C0              rjmp L49
 021C           L46:
 021C                   .dbline 185
 021C           ;       {
 021C                   .dbline 186
 021C           ;               DispHalfWord(Tx,Ty,str[i],str[i+1]);
 021C 262E              mov R2,R22
 021E 3324              clr R3
 0220 2C0C              add R2,R12
 0222 3D1C              adc R3,R13
 0224 F101              movw R30,R2
 0226 2180              ldd R2,z+1
 0228 2A82              std y+2,R2
 022A 2080              ldd R2,z+0
 022C 2882              std y+0,R2
 022E 2A2D              mov R18,R10
 0230 042F              mov R16,R20
 0232 C7DF              rcall _DispHalfWord
 0234                   .dbline 187
 0234           ;               Tx++;
 0234 4395              inc R20
 0236                   .dbline 188
 0236           ;               if (Tx>=8) { Ty=(Ty+1)&0x03;Tx=0; }
 0236 4830              cpi R20,8
 0238 28F0              brlo L50
 023A           X11:
 023A                   .dbline 188
 023A                   .dbline 188
 023A 8A2D              mov R24,R10
 023C 8F5F              subi R24,255    ; addi 1
 023E 8370              andi R24,3
 0240 A82E              mov R10,R24
 0242                   .dbline 188
 0242 4427              clr R20
 0244                   .dbline 188
 0244           L50:
 0244                   .dbline 189
 0244           ;       }
 0244           L47:
 0244                   .dbline 184
 0244 6E5F              subi R22,254    ; addi 2
 0246           L49:
 0246                   .dbline 184
 0246 E62F              mov R30,R22
 0248 FF27              clr R31
 024A EC0D              add R30,R12
 024C FD1D              adc R31,R13
 024E 2080              ldd R2,z+0
 0250 2220              tst R2
 0252 21F7              brne L46
 0254           X12:
 0254                   .dbline -2
 0254           L45:
 0254                   .dbline 0 ; func end
 0254 2396              adiw R28,3
 0256 00C0              rjmp pop_xgsetF0FC
 0258                   .dbsym r Ty 10 c
 0258                   .dbsym r Tx 20 c
 0258                   .dbsym r i 22 c
 0258                   .dbsym r str 12 pc
 0258                   .dbsym r y 20 c
 0258                   .dbsym r x 14 c
 0258                   .dbend
 0258                   .dbfunc e PrintSLen _PrintSLen fV
 0258           ;             Ty -> R10
 0258           ;             Tx -> R22
 0258           ;              i -> R20
 0258           ;            Len -> R12
 0258           ;            str -> R14,R15
 0258           ;              y -> R22
 0258           ;              x -> R20
                        .even
 0258           _PrintSLen::
 0258 00D0              rcall push_xgsetF0FC
 025A 622F              mov R22,R18
 025C 402F              mov R20,R16
 025E 2397              sbiw R28,3
 0260 ED84              ldd R14,y+13
 0262 FE84              ldd R15,y+14
 0264 CF84              ldd R12,y+15
 0266                   .dbline -1
 0266                   .dbline 201
 0266           ; //    EA=1;
 0266           ; }
 0266           ; 
 0266           ; 
 0266           ; 
 0266           ; //**************************************在指定位置打印指定长度字符串**********************************
 0266           ; //x:串首字符在LCD屏幕上列的位置(水平位置) 0<=x<=7  
 0266           ; //y:串首字符在LCD屏幕上行的位置(垂直位置) 0<=y<=3 
 0266           ; //*str:存放ASCII字符串的指针
 0266           ; //Len:字符串的长度,字节为单位
 0266           ; void PrintSLen(uchar x,uchar y,uchar *str,uchar Len)          //在指定位置打印字符串
 0266           ; {
 0266                   .dbline 203
 0266           ;       uchar i,Tx,Ty;
 0266           ;       Ty=y;Tx=x;
 0266 A62E              mov R10,R22
 0268                   .dbline 203
 0268 642F              mov R22,R20
 026A                   .dbline 204
 026A           ;       for(i=0;i<Len;i=i+2)
 026A 4427              clr R20
 026C 25C0              rjmp L56
 026E           L53:
 026E                   .dbline 205
 026E           ;       {
 026E                   .dbline 206
 026E           ;               if((Len-i)==1) DispHalfWord(Tx,Ty,str[i],'\0'); else DispHalfWord(Tx,Ty,str[i],str[i+1]);
 026E 8C2D              mov R24,R12
 0270 841B              sub R24,R20
 0272 8130              cpi R24,1
 0274 61F4              brne L57
 0276           X13:
 0276                   .dbline 206
 0276 2224              clr R2
 0278 2A82              std y+2,R2
 027A E42F              mov R30,R20
 027C FF27              clr R31
 027E EE0D              add R30,R14
 0280 FF1D              adc R31,R15
 0282 2080              ldd R2,z+0
 0284 2882              std y+0,R2
 0286 2A2D              mov R18,R10
 0288 062F              mov R16,R22
 028A 9BDF              rcall _DispHalfWord
 028C 0CC0              rjmp L58
 028E           L57:
 028E                   .dbline 206
 028E 242E              mov R2,R20
 0290 3324              clr R3
 0292 2E0C              add R2,R14
 0294 3F1C              adc R3,R15
 0296 F101              movw R30,R2
 0298 2180              ldd R2,z+1
 029A 2A82              std y+2,R2
 029C 2080              ldd R2,z+0
 029E 2882              std y+0,R2
 02A0 2A2D              mov R18,R10
 02A2 062F              mov R16,R22
 02A4 8EDF              rcall _DispHalfWord
 02A6           L58:
 02A6                   .dbline 207
 02A6           ;               Tx++;
 02A6 6395              inc R22
 02A8                   .dbline 208
 02A8           ;               if (Tx>=8) { Ty=(Ty+1)&0x03;Tx=0; }
 02A8 6830              cpi R22,8
 02AA 28F0              brlo L59
 02AC           X14:
 02AC                   .dbline 208
 02AC                   .dbline 208
 02AC 8A2D              mov R24,R10
 02AE 8F5F              subi R24,255    ; addi 1
 02B0 8370              andi R24,3
 02B2 A82E              mov R10,R24
 02B4                   .dbline 208
 02B4 6627              clr R22
 02B6                   .dbline 208
 02B6           L59:
 02B6                   .dbline 209
 02B6           ;       }
 02B6           L54:
 02B6                   .dbline 204
 02B6 4E5F              subi R20,254    ; addi 2
 02B8           L56:
 02B8                   .dbline 204
 02B8 4C15              cp R20,R12
 02BA C8F2              brlo L53
 02BC           X15:
 02BC                   .dbline -2
 02BC           L52:
 02BC                   .dbline 0 ; func end
 02BC 2396              adiw R28,3
 02BE 00C0              rjmp pop_xgsetF0FC
 02C0                   .dbsym r Ty 10 c
 02C0                   .dbsym r Tx 22 c
 02C0                   .dbsym r i 20 c
 02C0                   .dbsym r Len 12 c
 02C0                   .dbsym r str 14 pc
 02C0                   .dbsym r y 22 c
 02C0                   .dbsym r x 20 c
 02C0                   .dbend
 02C0                   .dbfunc e DisplayNumChar _DisplayNumChar fV
 02C0           ;          srnum -> R12
 02C0           ;          tnnum -> R22
 02C0           ;          hunum -> R20
 02C0           ;          knnum -> R14
 02C0           ;             ll -> R22,R23
 02C0           ;              h -> R10
 02C0           ;              l -> y+13
                        .even
 02C0           _DisplayNumChar::
 02C0 00D0              rcall push_arg4
 02C2 00D0              rcall push_xgsetF0FC
 02C4 A22E              mov R10,R18
 02C6 2397              sbiw R28,3
 02C8 6989              ldd R22,y+17
 02CA 7A89              ldd R23,y+18
 02CC                   .dbline -1
 02CC                   .dbline 215
 02CC           ; //    EA=1;
 02CC           ; }
 02CC           ; 
 02CC           ; 
 02CC           ; void DisplayNumChar(unsigned char l,unsigned char h,unsigned int ll)
 02CC           ; {
 02CC                   .dbline 217
 02CC           ;   unsigned char knnum,hunum,tnnum,srnum;  //百、十、个位
 02CC           ;   knnum=ll/1000;
 02CC 28EE              ldi R18,1000
 02CE 33E0              ldi R19,3
 02D0 8B01              movw R16,R22
 02D2 00D0              rcall div16u
 02D4 E02E              mov R14,R16
 02D6                   .dbline 218
 02D6           ;   hunum=ll/100-10*knnum;      //百位
 02D6 8AE0              ldi R24,10
 02D8 8E9D              mul R24,R14
 02DA 1001              movw R2,R0
 02DC 24E6              ldi R18,100
 02DE 30E0              ldi R19,0
 02E0 8B01              movw R16,R22
 02E2 00D0              rcall div16u
 02E4 402F              mov R20,R16
 02E6 4219              sub R20,R2
 02E8 5309              sbc R21,R3
 02EA                   .dbline 219
 02EA           ;   srnum=ll%10;                //个位
 02EA 2AE0              ldi R18,10
 02EC 30E0              ldi R19,0
 02EE 8B01              movw R16,R22
 02F0 00D0              rcall mod16u
 02F2 C02E              mov R12,R16
 02F4                   .dbline 220
 02F4           ;   tnnum=(ll-knnum*1000-hunum*100)/10; //十位
 02F4 2E2D              mov R18,R14
 02F6 3327              clr R19
 02F8 08EE              ldi R16,1000
 02FA 13E0              ldi R17,3
 02FC 00D0              rcall empy16s
 02FE 1801              movw R2,R16
 0300 8B01              movw R16,R22
 0302 0219              sub R16,R2
 0304 1309              sbc R17,R3
 0306 84E6              ldi R24,100
 0308 849F              mul R24,R20
 030A 0019              sub R16,R0
 030C 1109              sbc R17,R1
 030E 2AE0              ldi R18,10
 0310 30E0              ldi R19,0
 0312 00D0              rcall div16u
 0314 602F              mov R22,R16
 0316                   .dbline 222
 0316           ;   
 0316           ;   knnum+=0x30;hunum+=0x30;srnum+=0x30;tnnum+=0x30;
 0316 8E2D              mov R24,R14
 0318 805D              subi R24,208    ; addi 48
 031A E82E              mov R14,R24
 031C                   .dbline 222
 031C 405D              subi R20,208    ; addi 48
 031E                   .dbline 222
 031E 8C2D              mov R24,R12
 0320 805D              subi R24,208    ; addi 48
 0322 C82E              mov R12,R24
 0324                   .dbline 222
 0324 605D              subi R22,208    ; addi 48
 0326                   .dbline 223
 0326           ;   DispHalfWord(l,h,knnum,hunum);
 0326 4A83              std y+2,R20
 0328 E882              std y+0,R14
 032A 2A2D              mov R18,R10
 032C 0D85              ldd R16,y+13
 032E 49DF              rcall _DispHalfWord
 0330                   .dbline 224
 0330           ;   DispHalfWord(l+1,h,tnnum,srnum);
 0330 CA82              std y+2,R12
 0332 6883              std y+0,R22
 0334 2A2D              mov R18,R10
 0336 0D85              ldd R16,y+13
 0338 0F5F              subi R16,255    ; addi 1
 033A 43DF              rcall _DispHalfWord
 033C                   .dbline -2
 033C           L61:
 033C                   .dbline 0 ; func end
 033C 2396              adiw R28,3
 033E 00D0              rcall pop_xgsetF0FC
 0340 2496              adiw R28,4
 0342 0895              ret
 0344                   .dbsym r srnum 12 c
 0344                   .dbsym r tnnum 22 c
 0344                   .dbsym r hunum 20 c
 0344                   .dbsym r knnum 14 c
 0344                   .dbsym r ll 22 i
 0344                   .dbsym r h 10 c
 0344                   .dbsym l l 13 c
 0344                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\学习\AVRpro\Mega8程序\TestADC\LCDDrive.C
 0000           _AC_Y::
 0000                   .blkb 1
 0001                   .dbsym e AC_Y _AC_Y c
 0001           _AC_X::
 0001                   .blkb 1
 0002                   .dbsym e AC_X _AC_X c
 0002           _LCD_DAT::
 0002                   .blkb 1
 0003                   .dbsym e LCD_DAT _LCD_DAT c
 0003           _LCD_COM::
 0003                   .blkb 1
 0004                   .dbsym e LCD_COM _LCD_COM c
 0004           ; }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -