📄 pp.lis
字号:
00D8 ; Y -> R12
00D8 ; X -> R14
.even
00D8 _DisplayListChar1::
00D8 00D0 rcall push_gset5
00DA C22E mov R12,R18
00DC E02E mov R14,R16
00DE 2197 sbiw R28,1
00E0 AB84 ldd R10,y+11
00E2 BC84 ldd R11,y+12
00E4 6D85 ldd R22,y+13
00E6 .dbline -1
00E6 .dbline 56
00E6 ; }
00E6 ; }
00E6 ; //************************************************************显示RAM字符串16//
00E6 ; void DisplayListChar1(unsigned char X, unsigned char Y, unsigned char *DData,unsigned char Leng)
00E6 ; {
00E6 .dbline 58
00E6 ; unsigned char j;
00E6 ; Y &= 0x01;X &= 0x0F;
00E6 8C2D mov R24,R12
00E8 8170 andi R24,1
00EA C82E mov R12,R24
00EC .dbline 58
00EC 8E2D mov R24,R14
00EE 8F70 andi R24,15
00F0 E82E mov R14,R24
00F2 .dbline 59
00F2 ; for(j=0;j<Leng;X++,j++)
00F2 4427 clr R20
00F4 0EC0 rjmp L23
00F6 L20:
00F6 .dbline 60
00F6 ; {
00F6 .dbline 61
00F6 ; if(X<=0xf)DisplayOneChar(X,Y,DData[j]);
00F6 8FE0 ldi R24,15
00F8 8E15 cp R24,R14
00FA 48F0 brlo L24
00FC .dbline 61
00FC E42F mov R30,R20
00FE FF27 clr R31
0100 EA0D add R30,R10
0102 FB1D adc R31,R11
0104 2080 ldd R2,z+0
0106 2882 std y+0,R2
0108 2C2D mov R18,R12
010A 0E2D mov R16,R14
010C B0DF rcall _DisplayOneChar
010E L24:
010E .dbline 62
010E L21:
010E .dbline 59
010E E394 inc R14
0110 4395 inc R20
0112 L23:
0112 .dbline 59
0112 4617 cp R20,R22
0114 80F3 brlo L20
0116 .dbline -2
0116 L19:
0116 2196 adiw R28,1
0118 00D0 rcall pop_gset5
011A .dbline 0 ; func end
011A 0895 ret
011C .dbsym r j 20 c
011C .dbsym r Leng 22 c
011C .dbsym r DData 10 pc
011C .dbsym r Y 12 c
011C .dbsym r X 14 c
011C .dbend
011C .dbfunc e LCMInit _LCMInit fV
.even
011C _LCMInit::
011C .dbline -1
011C .dbline 66
011C ; }
011C ; }
011C ; //****************************************************************LCM初始化17//
011C ; void LCMInit(void)
011C ; {
011C .dbline 67
011C ; PORTB = 0;
011C 2224 clr R2
011E 28BA out 0x18,R2
0120 .dbline 68
0120 ; WriteCommandLCM(0x38,0); //三次显示模式设置,不检测忙信号
0120 2227 clr R18
0122 08E3 ldi R16,56
0124 7FDF rcall _WriteCommandLCM
0126 .dbline 69
0126 ; delay_ms(5);
0126 05E0 ldi R16,5
0128 10E0 ldi R17,0
012A C6D1 rcall _delay_ms
012C .dbline 70
012C ; WriteCommandLCM(0x38,0);
012C 2227 clr R18
012E 08E3 ldi R16,56
0130 79DF rcall _WriteCommandLCM
0132 .dbline 71
0132 ; delay_ms(5);
0132 05E0 ldi R16,5
0134 10E0 ldi R17,0
0136 C0D1 rcall _delay_ms
0138 .dbline 72
0138 ; WriteCommandLCM(0x38,0);
0138 2227 clr R18
013A 08E3 ldi R16,56
013C 73DF rcall _WriteCommandLCM
013E .dbline 73
013E ; delay_ms(5);
013E 05E0 ldi R16,5
0140 10E0 ldi R17,0
0142 BAD1 rcall _delay_ms
0144 .dbline 74
0144 ; WriteCommandLCM(0x38,1); //显示模式设置,开始要求每次检测忙信号
0144 21E0 ldi R18,1
0146 08E3 ldi R16,56
0148 6DDF rcall _WriteCommandLCM
014A .dbline 75
014A ; WriteCommandLCM(0x08,1); //关闭显示
014A 21E0 ldi R18,1
014C 08E0 ldi R16,8
014E 6ADF rcall _WriteCommandLCM
0150 .dbline 76
0150 ; WriteCommandLCM(0x01,1); //显示清屏
0150 21E0 ldi R18,1
0152 01E0 ldi R16,1
0154 67DF rcall _WriteCommandLCM
0156 .dbline 77
0156 ; WriteCommandLCM(0x06,1); // 显示光标移动设置
0156 21E0 ldi R18,1
0158 06E0 ldi R16,6
015A 64DF rcall _WriteCommandLCM
015C .dbline 78
015C ; WriteCommandLCM(0x0C,1); // 显示开及光标设置
015C 21E0 ldi R18,1
015E 0CE0 ldi R16,12
0160 61DF rcall _WriteCommandLCM
0162 .dbline -2
0162 L26:
0162 .dbline 0 ; func end
0162 0895 ret
0164 .dbend
0164 .dbfunc e RxUart _RxUart fV
.even
0164 _RxUart::
0164 .dbline -1
0164 .dbline 84
0164 ; }
0164 ;
0164 ; //***************************************************中断任务//
0164 ; //*************************************************************接收串口数据21//
0164 ; void RxUart(void)
0164 ; {
0164 .dbline 85
0164 ; switch(RxUartAddr)
0164 00911200 lds R16,_RxUartAddr
0168 1127 clr R17
016A 0030 cpi R16,0
016C 0107 cpc R16,R17
016E 49F0 breq L31
0170 X0:
0170 0130 cpi R16,1
0172 E0E0 ldi R30,0
0174 1E07 cpc R17,R30
0176 61F0 breq L32
0178 0230 cpi R16,2
017A E0E0 ldi R30,0
017C 1E07 cpc R17,R30
017E C1F0 breq L33
0180 6FC0 rjmp L28
0182 X1:
0182 .dbline 86
0182 ; {
0182 L31:
0182 .dbline 88
0182 ; case(0)://接收关闭
0182 ; {
0182 .dbline 89
0182 ; RxUartTemp=UDR;RxUartAddr=0;return;
0182 2CB0 in R2,0xc
0184 20921100 sts _RxUartTemp,R2
0188 .dbline 89
0188 2224 clr R2
018A 20921200 sts _RxUartAddr,R2
018E .dbline 89
018E 68C0 rjmp L27
0190 L32:
0190 .dbline 92
0190 ; }
0190 ; case(1)://接收初始
0190 ; {
0190 .dbline 93
0190 ; RxUartLeng=0;RxUartDely=200;RxUartAddr=2;return;
0190 2224 clr R2
0192 3324 clr R3
0194 30921000 sts _RxUartLeng+1,R3
0198 20920F00 sts _RxUartLeng,R2
019C .dbline 93
019C 88EC ldi R24,200
019E 90E0 ldi R25,0
01A0 90930C00 sts _RxUartDely+1,R25
01A4 80930B00 sts _RxUartDely,R24
01A8 .dbline 93
01A8 82E0 ldi R24,2
01AA 80931200 sts _RxUartAddr,R24
01AE .dbline 93
01AE 58C0 rjmp L27
01B0 L33:
01B0 .dbline 96
01B0 ; }
01B0 ; case(2)://接收处理
01B0 ; {
01B0 .dbline 97
01B0 ; if((UCSRA)&(1<<RXC))
01B0 5F9B sbis 0xb,7
01B2 2AC0 rjmp L34
01B4 .dbline 98
01B4 ; {
01B4 .dbline 99
01B4 ; RxUartTemp=UDR;RxUartWait=2;RxUartDely=100;
01B4 2CB0 in R2,0xc
01B6 20921100 sts _RxUartTemp,R2
01BA .dbline 99
01BA 82E0 ldi R24,2
01BC 90E0 ldi R25,0
01BE 90930E00 sts _RxUartWait+1,R25
01C2 80930D00 sts _RxUartWait,R24
01C6 .dbline 99
01C6 84E6 ldi R24,100
01C8 90930C00 sts _RxUartDely+1,R25
01CC 80930B00 sts _RxUartDely,R24
01D0 .dbline 100
01D0 ; if(RxUartLeng>=250) return;
01D0 80910F00 lds R24,_RxUartLeng
01D4 90911000 lds R25,_RxUartLeng+1
01D8 8A3F cpi R24,250
01DA E0E0 ldi R30,0
01DC 9E07 cpc R25,R30
01DE 08F0 brlo L36
01E0 .dbline 100
01E0 3FC0 rjmp L27
01E2 L36:
01E2 .dbline 101
01E2 ; RxUartDbuf[RxUartLeng++]=RxUartTemp;
01E2 20900F00 lds R2,_RxUartLeng
01E6 30901000 lds R3,_RxUartLeng+1
01EA C101 movw R24,R2
01EC 0196 adiw R24,1
01EE 90931000 sts _RxUartLeng+1,R25
01F2 80930F00 sts _RxUartLeng,R24
01F6 80E0 ldi R24,<_RxUartDbuf
01F8 90E0 ldi R25,>_RxUartDbuf
01FA F101 movw R30,R2
01FC E80F add R30,R24
01FE F91F adc R31,R25
0200 20901100 lds R2,_RxUartTemp
0204 2082 std z+0,R2
0206 .dbline 102
0206 ; return;
0206 2CC0 rjmp L27
0208 L34:
0208 .dbline 105
0208 ; }
0208 ; else
0208 ; {
0208 .dbline 106
0208 ; if(!RxUartWait) return;
0208 20900D00 lds R2,_RxUartWait
020C 30900E00 lds R3,_RxUartWait+1
0210 2220 tst R2
0212 19F4 brne L38
0214 3320 tst R3
0216 09F4 brne L38
0218 X2:
0218 .dbline 106
0218 23C0 rjmp L27
021A L38:
021A .dbline 107
021A ; if(--RxUartDely) return;
021A 80910B00 lds R24,_RxUartDely
021E 90910C00 lds R25,_RxUartDely+1
0222 0197 sbiw R24,1
0224 90930C00 sts _RxUartDely+1,R25
0228 80930B00 sts _RxUartDely,R24
022C 8030 cpi R24,0
022E 8907 cpc R24,R25
0230 09F0 breq L40
0232 X3:
0232 .dbline 107
0232 16C0 rjmp L27
0234 L40:
0234 .dbline 108
0234 ; RxUartDely=200;
0234 88EC ldi R24,200
0236 90E0 ldi R25,0
0238 90930C00 sts _RxUartDely+1,R25
023C 80930B00 sts _RxUartDely,R24
0240 .dbline 109
0240 ; if(--RxUartWait) return;
0240 80910D00 lds R24,_RxUartWait
0244 90910E00 lds R25,_RxUartWait+1
0248 0197 sbiw R24,1
024A 90930E00 sts _RxUartWait+1,R25
024E 80930D00 sts _RxUartWait,R24
0252 8030 cpi R24,0
0254 8907 cpc R24,R25
0256 09F0 breq L42
0258 X4:
0258 .dbline 109
0258 03C0 rjmp L27
025A L42:
025A .dbline 110
025A 2224 clr R2
025C 20921200 sts _RxUartAddr,R2
0260 .dbline 110
0260 L28:
0260 .dbline -2
0260 L27:
0260 .dbline 0 ; func end
0260 0895 ret
0262 .dbend
0262 .dbfunc e OutLed _OutLed fV
.even
0262 _OutLed::
0262 .dbline -1
0262 .dbline 117
0262 ; RxUartAddr=0;return;
0262 ; }
0262 ; }
0262 ; }
0262 ; }
0262 ; //***************************************************************输出三色灯22//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -