📄 adc.lis
字号:
0106 .dbline 82
0106 ; busy();
0106 85DF xcall _busy
0108 .dbline 83
0108 ; s_ms(500);
0108 04EF ldi R16,500
010A 11E0 ldi R17,1
010C 79DF xcall _s_ms
010E .dbline 84
010E ; PORTA|=(1<<RS); //RS=1
010E DD9A sbi 0x1b,5
0110 .dbline 85
0110 ; s_ms(500);
0110 04EF ldi R16,500
0112 11E0 ldi R17,1
0114 75DF xcall _s_ms
0116 .dbline 86
0116 ; PORTA&=~(1<<RW); //RW=0
0116 DE98 cbi 0x1b,6
0118 .dbline 87
0118 ; s_ms(500);
0118 04EF ldi R16,500
011A 11E0 ldi R17,1
011C 71DF xcall _s_ms
011E .dbline 88
011E ; PORTA|=(1<<EN); //EN=1
011E DF9A sbi 0x1b,7
0120 .dbline 89
0120 ; s_ms(500);
0120 04EF ldi R16,500
0122 11E0 ldi R17,1
0124 6DDF xcall _s_ms
0126 .dbline 90
0126 ; PORTD = data; //输出数据
0126 A2BA out 0x12,R10
0128 .dbline 91
0128 ; s_ms(500);
0128 04EF ldi R16,500
012A 11E0 ldi R17,1
012C 69DF xcall _s_ms
012E .dbline 92
012E ; PORTA&=~(1<<EN); //EN=0
012E DF98 cbi 0x1b,7
0130 .dbline 93
0130 ; s_ms(500);
0130 04EF ldi R16,500
0132 11E0 ldi R17,1
0134 65DF xcall _s_ms
0136 .dbline -2
0136 L12:
0136 .dbline 0 ; func end
0136 A990 ld R10,y+
0138 0895 ret
013A .dbsym r data 10 c
013A .dbend
013A .dbfunc e readdata _readdata fc
013A ; temp -> R10
.even
013A _readdata::
013A AA92 st -y,R10
013C .dbline -1
013C .dbline 99
013C ; }
013C ;
013C ;
013C ; //读数据
013C ; uchar readdata(void)
013C ; {
013C .dbline 101
013C ; uchar temp;
013C ; busy();
013C 6ADF xcall _busy
013E .dbline 102
013E ; s_ms(500);
013E 04EF ldi R16,500
0140 11E0 ldi R17,1
0142 5EDF xcall _s_ms
0144 .dbline 103
0144 ; PORTA|=(1<<RS); //RS=1
0144 DD9A sbi 0x1b,5
0146 .dbline 104
0146 ; s_ms(500);
0146 04EF ldi R16,500
0148 11E0 ldi R17,1
014A 5ADF xcall _s_ms
014C .dbline 105
014C ; PORTA|=(1<<RW); //RW=1
014C DE9A sbi 0x1b,6
014E .dbline 106
014E ; s_ms(500);
014E 04EF ldi R16,500
0150 11E0 ldi R17,1
0152 56DF xcall _s_ms
0154 .dbline 107
0154 ; PORTA|=(1<<EN); //EN=1
0154 DF9A sbi 0x1b,7
0156 .dbline 108
0156 ; s_ms(500);
0156 04EF ldi R16,500
0158 11E0 ldi R17,1
015A 52DF xcall _s_ms
015C .dbline 109
015C ; DDRD=0x00; //A端口变输入
015C 2224 clr R2
015E 21BA out 0x11,R2
0160 .dbline 110
0160 ; s_ms(500);
0160 04EF ldi R16,500
0162 11E0 ldi R17,1
0164 4DDF xcall _s_ms
0166 .dbline 111
0166 ; temp = PIND; //读A端口
0166 A0B2 in R10,0x10
0168 .dbline 112
0168 ; s_ms(500);
0168 04EF ldi R16,500
016A 11E0 ldi R17,1
016C 49DF xcall _s_ms
016E .dbline 113
016E ; DDRD=0xff; //A端口变输出
016E 8FEF ldi R24,255
0170 81BB out 0x11,R24
0172 .dbline 114
0172 ; s_ms(500);
0172 04EF ldi R16,500
0174 11E0 ldi R17,1
0176 44DF xcall _s_ms
0178 .dbline 115
0178 ; PORTA&=~(1<<EN); //EN=0
0178 DF98 cbi 0x1b,7
017A .dbline 116
017A ; s_ms(500);
017A 04EF ldi R16,500
017C 11E0 ldi R17,1
017E 40DF xcall _s_ms
0180 .dbline 117
0180 ; return temp;
0180 0A2D mov R16,R10
0182 .dbline -2
0182 L13:
0182 .dbline 0 ; func end
0182 A990 ld R10,y+
0184 0895 ret
0186 .dbsym r temp 10 c
0186 .dbend
0186 .dbfunc e WriteCGRAM _WriteCGRAM fV
0186 ; t -> R10,R11
0186 ; i -> R20,R21
0186 ; pBuffer -> R22,R23
0186 ; num -> R10,R11
.even
0186 _WriteCGRAM::
0186 0E940000 xcall push_xgsetF00C
018A B901 movw R22,R18
018C 5801 movw R10,R16
018E .dbline -1
018E .dbline 127
018E ; }
018E ;
018E ; //=================================================
018E ; // 描述: 写LCD内部CGRAM函数
018E ; // 入口: ‘num’要写的数据个数
018E ; // ‘pbuffer’要写的数据的首地址
018E ; // 出口: 无
018E ; //================================================
018E ; void WriteCGRAM(uint num, const uint *pBuffer)
018E ; {
018E .dbline 129
018E ; uint i,t;
018E ; writecom(0x40);
018E 00E4 ldi R16,64
0190 6BDF xcall _writecom
0192 .dbline 130
0192 ; PORTA|=(1<<RS);
0192 DD9A sbi 0x1b,5
0194 .dbline 131
0194 ; PORTA&=~(1<<RW);
0194 DE98 cbi 0x1b,6
0196 .dbline 132
0196 ; for(i=num;i!=0;i--)
0196 A501 movw R20,R10
0198 0AC0 xjmp L18
019A L15:
019A .dbline 133
019A ; {
019A .dbline 134
019A ; t = *pBuffer;
019A FB01 movw R30,R22
019C A790 elpm R10,Z+
019E B690 elpm R11,Z
01A0 .dbline 135
01A0 ; PORTA|=(1<<EN);
01A0 DF9A sbi 0x1b,7
01A2 .dbline 136
01A2 ; PORTD = t;
01A2 A2BA out 0x12,R10
01A4 .dbline 137
01A4 ; PORTA&=~(1<<EN);
01A4 DF98 cbi 0x1b,7
01A6 .dbline 138
01A6 ; pBuffer++;
01A6 6E5F subi R22,254 ; offset = 2
01A8 7F4F sbci R23,255
01AA .dbline 139
01AA ; }
01AA L16:
01AA .dbline 132
01AA 4150 subi R20,1
01AC 5040 sbci R21,0
01AE L18:
01AE .dbline 132
01AE 4030 cpi R20,0
01B0 4507 cpc R20,R21
01B2 99F7 brne L15
01B4 X2:
01B4 .dbline -2
01B4 L14:
01B4 .dbline 0 ; func end
01B4 0C940000 xjmp pop_xgsetF00C
01B8 .dbsym r t 10 i
01B8 .dbsym r i 20 i
01B8 .dbsym r pBuffer 22 pki
01B8 .dbsym r num 10 i
01B8 .dbend
01B8 .dbfunc e WriteMenu _WriteMenu fV
01B8 ; t -> R10
01B8 ; i -> R22
01B8 ; pBuffer -> R20,R21
.even
01B8 _WriteMenu::
01B8 0E940000 xcall push_xgsetF00C
01BC A801 movw R20,R16
01BE .dbline -1
01BE .dbline 149
01BE ;
01BE ; }
01BE ;
01BE ; //=================================================
01BE ; //描述:写菜单函数,本程序使用的LCD规格为 16 * 2
01BE ; //入口:菜单数组首地址
01BE ; //出口:无
01BE ; //=================================================
01BE ; void WriteMenu(const uchar *pBuffer)
01BE ; {
01BE .dbline 151
01BE ; uchar i,t;
01BE ; writecom(0x80); //数据地址
01BE 00E8 ldi R16,128
01C0 53DF xcall _writecom
01C2 .dbline 153
01C2 ;
01C2 ; PORTA|=(1<<RS);
01C2 DD9A sbi 0x1b,5
01C4 .dbline 154
01C4 ; PORTA&=~(1<<RW);
01C4 DE98 cbi 0x1b,6
01C6 .dbline 155
01C6 ; s_ms(50);
01C6 02E3 ldi R16,50
01C8 10E0 ldi R17,0
01CA 1ADF xcall _s_ms
01CC .dbline 156
01CC ; for(i=0;i<16;i++)
01CC 6627 clr R22
01CE 0BC0 xjmp L23
01D0 L20:
01D0 .dbline 157
01D0 ; {
01D0 .dbline 158
01D0 ; t = *pBuffer;
01D0 FA01 movw R30,R20
01D2 A690 elpm R10,Z
01D4 .dbline 159
01D4 ; PORTD = t;
01D4 A2BA out 0x12,R10
01D6 .dbline 160
01D6 ; PORTA|=(1<<EN);
01D6 DF9A sbi 0x1b,7
01D8 .dbline 161
01D8 ; s_ms(50);
01D8 02E3 ldi R16,50
01DA 10E0 ldi R17,0
01DC 11DF xcall _s_ms
01DE .dbline 162
01DE ; PORTA&=~(1<<EN);
01DE DF98 cbi 0x1b,7
01E0 .dbline 163
01E0 ; pBuffer++;
01E0 4F5F subi R20,255 ; offset = 1
01E2 5F4F sbci R21,255
01E4 .dbline 164
01E4 ; }
01E4 L21:
01E4 .dbline 156
01E4 6395 inc R22
01E6 L23:
01E6 .dbline 156
01E6 6031 cpi R22,16
01E8 98F3 brlo L20
01EA X3:
01EA .dbline 165
01EA ; writecom(0xC0);
01EA 00EC ldi R16,192
01EC 3DDF xcall _writecom
01EE .dbline 167
01EE ;
01EE ; PORTA|=(1<<RS);
01EE DD9A sbi 0x1b,5
01F0 .dbline 168
01F0 ; PORTA&=~(1<<RW);
01F0 DE98 cbi 0x1b,6
01F2 .dbline 169
01F2 ; s_ms(50);
01F2 02E3 ldi R16,50
01F4 10E0 ldi R17,0
01F6 04DF xcall _s_ms
01F8 .dbline 170
01F8 ; for(i=0;i<16;i++)
01F8 6627 clr R22
01FA 0BC0 xjmp L27
01FC L24:
01FC .dbline 171
01FC ; {
01FC .dbline 172
01FC ; t = *pBuffer;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -