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

📄 adc.lis

📁 LCD1602来显示通过AVR ADC0采集的信号
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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 + -