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

📄 t6963.lis

📁 atmega16控制的t6963型240×128显示程序。(移植修正)
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 013E           ;         return 2;
 013E 02E0              ldi R16,2
 0140 03C0              xjmp L43
 0142           L46:
 0142                   .dbline 172
 0142           ;     }
 0142           ;     WR_CMD(uCmd);
 0142 042F              mov R16,R20
 0144 80DF              xcall _WR_CMD
 0146                   .dbline 173
 0146           ;     return(0); // 返回0 成功 
 0146 0027              clr R16
 0148                   .dbline -2
 0148           L43:
 0148 0E940000          xcall pop_gset2
 014C                   .dbline 0 ; func end
 014C 0895              ret
 014E                   .dbsym r uPar1 22 c
 014E                   .dbsym r uCmd 20 c
 014E                   .dbend
 014E                   .dbfunc e fnPR12 _fnPR12 fc
 014E           ;           uCmd -> R20
                        .even
 014E           _fnPR12::
 014E 0E940000          xcall push_gset1
 0152 402F              mov R20,R16
 0154                   .dbline -1
 0154                   .dbline 179
 0154           ; }
 0154           ; /************************/
 0154           ; /* 写无参数的指令*/
 0154           ; /************************/
 0154           ; unsigned char fnPR12(unsigned char uCmd)
 0154           ; {   
 0154                   .dbline 180
 0154           ;     if(fnSTA01() == 0)
 0154 81DF              xcall _fnSTA01
 0156 0023              tst R16
 0158 11F4              brne L49
 015A                   .dbline 181
 015A           ;     {
 015A                   .dbline 182
 015A           ;         return 1;
 015A 01E0              ldi R16,1
 015C 03C0              xjmp L48
 015E           L49:
 015E                   .dbline 184
 015E           ;     }
 015E           ;     WR_CMD(uCmd);
 015E 042F              mov R16,R20
 0160 72DF              xcall _WR_CMD
 0162                   .dbline 185
 0162           ;     return(0); // 返回0 成功
 0162 0027              clr R16
 0164                   .dbline -2
 0164           L48:
 0164 0E940000          xcall pop_gset1
 0168                   .dbline 0 ; func end
 0168 0895              ret
 016A                   .dbsym r uCmd 20 c
 016A                   .dbend
 016A                   .dbfunc e fnPR13 _fnPR13 fc
 016A           ;          uData -> R20
                        .even
 016A           _fnPR13::
 016A 0E940000          xcall push_gset1
 016E 402F              mov R20,R16
 0170                   .dbline -1
 0170                   .dbline 191
 0170           ; }
 0170           ; /************************/
 0170           ; /* 写数据*/
 0170           ; /************************/
 0170           ; unsigned char fnPR13(unsigned char uData)
 0170           ; {
 0170                   .dbline 192
 0170           ;     if(fnSTA3() == 0)
 0170 97DF              xcall _fnSTA3
 0172 0023              tst R16
 0174 11F4              brne L52
 0176                   .dbline 193
 0176           ;     {
 0176                   .dbline 194
 0176           ;         return 1;
 0176 01E0              ldi R16,1
 0178 03C0              xjmp L51
 017A           L52:
 017A                   .dbline 196
 017A           ;     }
 017A           ;     WR_DAT(uData);
 017A 042F              mov R16,R20
 017C 5BDF              xcall _WR_DAT
 017E                   .dbline 197
 017E           ;     return(0); // 返回0 成功
 017E 0027              clr R16
 0180                   .dbline -2
 0180           L51:
 0180 0E940000          xcall pop_gset1
 0184                   .dbline 0 ; func end
 0184 0895              ret
 0186                   .dbsym r uData 20 c
 0186                   .dbend
 0186                   .dbfunc e fnPR2 _fnPR2 fc
 0186           ;           temp -> R20
                        .even
 0186           _fnPR2::
 0186 0E940000          xcall push_gset1
 018A                   .dbline -1
 018A                   .dbline 203
 018A           ; }
 018A           ; /************************/
 018A           ; /* 读数据*/
 018A           ; /************************/
 018A           ; unsigned char fnPR2(void)
 018A           ; {
 018A                   .dbline 205
 018A           ;     unsigned char temp;
 018A           ;     if(fnSTA01() == 0)
 018A 66DF              xcall _fnSTA01
 018C 0023              tst R16
 018E 11F4              brne L55
 0190                   .dbline 206
 0190           ;     {
 0190                   .dbline 207
 0190           ;          return 1; // 获取状态如果状态错
 0190 01E0              ldi R16,1
 0192 02C0              xjmp L54
 0194           L55:
 0194                   .dbline 209
 0194           ;     }
 0194           ;     temp=RD_DAT();
 0194 45DF              xcall _RD_DAT
 0196 402F              mov R20,R16
 0198                   .dbline 210
 0198           ;     return(temp); // 返回数据
 0198                   .dbline -2
 0198           L54:
 0198 0E940000          xcall pop_gset1
 019C                   .dbline 0 ; func end
 019C 0895              ret
 019E                   .dbsym r temp 20 c
 019E                   .dbend
 019E                   .dbfunc e fnSetPos _fnSetPos fV
 019E           ;           iPos -> R10,R11
 019E           ;           ucol -> R20
 019E           ;           urow -> R22
                        .even
 019E           _fnSetPos::
 019E 0E940000          xcall push_gset3
 01A2 422F              mov R20,R18
 01A4 602F              mov R22,R16
 01A6 2197              sbiw R28,1
 01A8                   .dbline -1
 01A8                   .dbline 216
 01A8           ; }
 01A8           ; /************************/
 01A8           ; /* 设置当前地址*/
 01A8           ; /************************/
 01A8           ; void fnSetPos(unsigned char urow, unsigned char ucol)
 01A8           ; {
 01A8                   .dbline 218
 01A8           ;     unsigned int iPos;
 01A8           ;     iPos = (unsigned int)urow * 30 + ucol;
 01A8 8EE1              ldi R24,30
 01AA 869F              mul R24,R22
 01AC 5001              movw R10,R0
 01AE 242E              mov R2,R20
 01B0 3324              clr R3
 01B2 A20C              add R10,R2
 01B4 B31C              adc R11,R3
 01B6                   .dbline 219
 01B6           ;     fnPR1(LC_ADD_POS,iPos & 0xFF,iPos / 256);
 01B6 1501              movw R2,R10
 01B8 232C              mov R2,R3
 01BA 3324              clr R3
 01BC 2882              std y+0,R2
 01BE 2A2D              mov R18,R10
 01C0 3070              andi R19,0
 01C2 04E2              ldi R16,36
 01C4 91DF              xcall _fnPR1
 01C6                   .dbline 220
 01C6           ;     gCurRow = urow;
 01C6 60930100          sts _gCurRow,R22
 01CA                   .dbline 221
 01CA           ;     gCurCol = ucol;
 01CA 40930000          sts _gCurCol,R20
 01CE                   .dbline -2
 01CE                   .dbline 222
 01CE           ; }
 01CE           L57:
 01CE 2196              adiw R28,1
 01D0 0E940000          xcall pop_gset3
 01D4                   .dbline 0 ; func end
 01D4 0895              ret
 01D6                   .dbsym r iPos 10 i
 01D6                   .dbsym r ucol 20 c
 01D6                   .dbsym r urow 22 c
 01D6                   .dbend
 01D6                   .dbfunc e cursor _cursor fV
 01D6           ;           uCol -> R22
 01D6           ;           uRow -> R20
                        .even
 01D6           _cursor::
 01D6 0E940000          xcall push_gset2
 01DA 622F              mov R22,R18
 01DC 402F              mov R20,R16
 01DE                   .dbline -1
 01DE                   .dbline 227
 01DE           ; /**********************/
 01DE           ; /* 设置当前显示行列*/
 01DE           ; /**********************/
 01DE           ; void cursor(unsigned char uRow, unsigned char uCol)
 01DE           ; {
 01DE                   .dbline 228
 01DE           ;     fnSetPos(uRow * 16, uCol);
 01DE 262F              mov R18,R22
 01E0 80E1              ldi R24,16
 01E2 849F              mul R24,R20
 01E4 002D              mov R16,R0
 01E6 DBDF              xcall _fnSetPos
 01E8                   .dbline -2
 01E8                   .dbline 229
 01E8           ; }
 01E8           L58:
 01E8 0E940000          xcall pop_gset2
 01EC                   .dbline 0 ; func end
 01EC 0895              ret
 01EE                   .dbsym r uCol 22 c
 01EE                   .dbsym r uRow 20 c
 01EE                   .dbend
 01EE                   .dbfunc e cls _cls fV
 01EE           ;              i -> R20,R21
                        .even
 01EE           _cls::
 01EE 0E940000          xcall push_gset1
 01F2 2197              sbiw R28,1
 01F4                   .dbline -1
 01F4                   .dbline 234
 01F4           ; /*********************/
 01F4           ; /* 清屏*/
 01F4           ; /*********************/
 01F4           ; void cls(void)
 01F4           ; {
 01F4                   .dbline 236
 01F4           ;     unsigned int i;
 01F4           ;     fnPR1(LC_ADD_POS,0x00,0x00); // 置地址指针为从零开始
 01F4 2224              clr R2
 01F6 2882              std y+0,R2
 01F8 2227              clr R18
 01FA 04E2              ldi R16,36
 01FC 75DF              xcall _fnPR1
 01FE                   .dbline 237
 01FE           ;     fnPR12(LC_AUT_WR); // 自动写
 01FE 00EB              ldi R16,176
 0200 A6DF              xcall _fnPR12
 0202                   .dbline 238
 0202           ;     for(i=0;i<240*128/8;i++) // 清一屏
 0202 4427              clr R20
 0204 5527              clr R21
 0206 05C0              xjmp L63
 0208           L60:
 0208                   .dbline 239
 0208                   .dbline 240
 0208 4BDF              xcall _fnSTA3
 020A                   .dbline 241
 020A 0027              clr R16
 020C AEDF              xcall _fnPR13
 020E                   .dbline 242
 020E           L61:
 020E                   .dbline 238
 020E 4F5F              subi R20,255  ; offset = 1
 0210 5F4F              sbci R21,255
 0212           L63:
 0212                   .dbline 238
 0212 4030              cpi R20,0
 0214 EFE0              ldi R30,15
 0216 5E07              cpc R21,R30
 0218 B8F3              brlo L60
 021A                   .dbline 243
 021A           ;     {
 021A           ;         fnSTA3();
 021A           ;         fnPR13(0x0); // 写数据实际使用时请将0x55 改成0x0
 021A           ;     }
 021A           ;     fnPR12(LC_AUT_OVR); // 自动写结束
 021A 02EB              ldi R16,178
 021C 98DF              xcall _fnPR12
 021E                   .dbline 244
 021E           ;     fnPR1(LC_ADD_POS,0x00,0x00); // 重置地址指针
 021E 2224              clr R2
 0220 2882              std y+0,R2
 0222 2227              clr R18
 0224 04E2              ldi R16,36
 0226 60DF              xcall _fnPR1
 0228                   .dbline 245
 0228           ;     gCurRow = 0; // 置地址指针存储变量
 0228 2224              clr R2
 022A 20920100          sts _gCurRow,R2
 022E                   .dbline 246
 022E           ;     gCurCol = 0;
 022E 20920000          sts _gCurCol,R2
 0232                   .dbline -2
 0232                   .dbline 247
 0232           ; }
 0232           L59:
 0232 2196              adiw R28,1
 0234 0E940000          xcall pop_gset1
 0238                   .dbline 0 ; func end
 0238 0895              ret
 023A                   .dbsym r i 20 i
 023A                   .dbend
 023A                   .dbfunc e fnLCMInit _fnLCMInit fc
                        .even
 023A           _fnLCMInit::
 023A 2197              sbiw R28,1
 023C                   .dbline -1
 023C                   .dbline 252
 023C           ; /************************/
 023C           ; /* LCM 初始化*/
 023C           ; /************************/
 023C           ; char fnLCMInit(void)
 023C           ; {
 023C                   .dbline 253
 023C           ;     if(fnPR1(LC_TXT_STP,0x00,0x00) != 0) // 文本显示区首地址
 023C 2224              clr R2
 023E 2882              std y+0,R2
 0240 2227              clr R18
 0242 00E4              ldi R16,64
 0244 51DF              xcall _fnPR1
 0246 0023              tst R16
 0248 11F0              breq L65
 024A                   .dbline 254
 024A           ;     {
 024A                   .dbline 255
 024A           ;         return (0xff);
 024A 0FEF              ldi R16,255
 024C 16C0              xjmp L64
 024E           L65:
 024E                   .dbline 257
 024E           ;     }
 024E           ;     fnPR1(LC_TXT_WID,0x1E,0x00); // 文本显示区宽度
 024E 2224              clr R2
 0250 2882              std y+0,R2
 0252 2EE1              ldi R18,30
 0254 01E4              ldi R16,65
 0256 48DF              xcall _fnPR1
 0258                   .dbline 258
 0258           ;     fnPR1(LC_GRH_STP,0x00,0x00); // 图形显示区首地址
 0258 2224              clr R2
 025A 2882              std y+0,R2
 025C 2227              clr R18
 025E 02E4  

⌨️ 快捷键说明

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