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

📄 adc-1602.lis

📁 LCD1602来显示通过AVR ADC0采集的信号
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 010E           ; }     
 010E           ; 
 010E           ; //写数据
 010E           ; void  writedata(uchar data)
 010E           ; {
 010E                   .dbline 84
 010E           ;       busy();
 010E 81DF              xcall _busy
 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<<RS);   //RS=1
 0116 DD9A              sbi 0x1b,5
 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<<RW);   //RW=0
 011E DE98              cbi 0x1b,6
 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           ;       PORTA|=(1<<EN);    //EN=1
 0126 DF9A              sbi 0x1b,7
 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           ;       PORTD = data;      //输出数据
 012E A2BA              out 0x12,R10
 0130                   .dbline 93
 0130           ;       s_ms(500);
 0130 04EF              ldi R16,500
 0132 11E0              ldi R17,1
 0134 65DF              xcall _s_ms
 0136                   .dbline 94
 0136           ;       PORTA&=~(1<<EN);   //EN=0
 0136 DF98              cbi 0x1b,7
 0138                   .dbline 95
 0138           ;       s_ms(500);
 0138 04EF              ldi R16,500
 013A 11E0              ldi R17,1
 013C 61DF              xcall _s_ms
 013E                   .dbline -2
 013E           L12:
 013E                   .dbline 0 ; func end
 013E A990              ld R10,y+
 0140 0895              ret
 0142                   .dbsym r data 10 c
 0142                   .dbend
 0142                   .dbfunc e readdata _readdata fc
 0142           ;           temp -> R10
                        .even
 0142           _readdata::
 0142 AA92              st -y,R10
 0144                   .dbline -1
 0144                   .dbline 101
 0144           ; }
 0144           ; 
 0144           ; 
 0144           ; //读数据
 0144           ; uchar readdata(void)
 0144           ; {
 0144                   .dbline 103
 0144           ;       uchar temp;
 0144           ;       busy();
 0144 66DF              xcall _busy
 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<<RS);  //RS=1
 014C DD9A              sbi 0x1b,5
 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<<RW);  //RW=1
 0154 DE9A              sbi 0x1b,6
 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           ;       PORTA|=(1<<EN);  //EN=1
 015C DF9A              sbi 0x1b,7
 015E                   .dbline 110
 015E           ;       s_ms(500);
 015E 04EF              ldi R16,500
 0160 11E0              ldi R17,1
 0162 4EDF              xcall _s_ms
 0164                   .dbline 111
 0164           ;       DDRD=0x00;       //A端口变输入
 0164 2224              clr R2
 0166 21BA              out 0x11,R2
 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           ;       temp = PIND;     //读A端口
 016E A0B2              in R10,0x10
 0170                   .dbline 114
 0170           ;       s_ms(500);
 0170 04EF              ldi R16,500
 0172 11E0              ldi R17,1
 0174 45DF              xcall _s_ms
 0176                   .dbline 115
 0176           ;       DDRD=0xff;       //A端口变输出
 0176 8FEF              ldi R24,255
 0178 81BB              out 0x11,R24
 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           ;       PORTA&=~(1<<EN); //EN=0
 0180 DF98              cbi 0x1b,7
 0182                   .dbline 118
 0182           ;       s_ms(500);
 0182 04EF              ldi R16,500
 0184 11E0              ldi R17,1
 0186 3CDF              xcall _s_ms
 0188                   .dbline 119
 0188           ;       return temp;    
 0188 0A2D              mov R16,R10
 018A                   .dbline -2
 018A           L13:
 018A                   .dbline 0 ; func end
 018A A990              ld R10,y+
 018C 0895              ret
 018E                   .dbsym r temp 10 c
 018E                   .dbend
 018E                   .dbfunc e WriteCGRAM _WriteCGRAM fV
 018E           ;              t -> R10,R11
 018E           ;              i -> R20,R21
 018E           ;        pBuffer -> R22,R23
 018E           ;            num -> R10,R11
                        .even
 018E           _WriteCGRAM::
 018E 0E940000          xcall push_xgsetF00C
 0192 B901              movw R22,R18
 0194 5801              movw R10,R16
 0196                   .dbline -1
 0196                   .dbline 129
 0196           ; }
 0196           ; 
 0196           ; //=================================================
 0196           ; // 描述: 写LCD内部CGRAM函数
 0196           ; // 入口: ‘num’要写的数据个数
 0196           ; //        ‘pbuffer’要写的数据的首地址
 0196           ; // 出口: 无
 0196           ; //================================================
 0196           ; void  WriteCGRAM(uint num, const uint *pBuffer)
 0196           ; {
 0196                   .dbline 131
 0196           ;       uint    i,t;
 0196           ;       writecom(0x40);
 0196 00E4              ldi R16,64
 0198 67DF              xcall _writecom
 019A                   .dbline 132
 019A           ;       PORTA|=(1<<RS);
 019A DD9A              sbi 0x1b,5
 019C                   .dbline 133
 019C           ;       PORTA&=~(1<<RW);
 019C DE98              cbi 0x1b,6
 019E                   .dbline 134
 019E           ;       for(i=num;i!=0;i--)
 019E A501              movw R20,R10
 01A0 0AC0              xjmp L18
 01A2           L15:
 01A2                   .dbline 135
 01A2           ;       {
 01A2                   .dbline 136
 01A2           ;               t = *pBuffer;
 01A2 FB01              movw R30,R22
 01A4 A790              elpm R10,Z+
 01A6 B690              elpm R11,Z
 01A8                   .dbline 137
 01A8           ;               PORTA|=(1<<EN);
 01A8 DF9A              sbi 0x1b,7
 01AA                   .dbline 138
 01AA           ;               PORTD = t;
 01AA A2BA              out 0x12,R10
 01AC                   .dbline 139
 01AC           ;               PORTA&=~(1<<EN);                                
 01AC DF98              cbi 0x1b,7
 01AE                   .dbline 140
 01AE           ;               pBuffer++;
 01AE 6E5F              subi R22,254  ; offset = 2
 01B0 7F4F              sbci R23,255
 01B2                   .dbline 141
 01B2           ;       }
 01B2           L16:
 01B2                   .dbline 134
 01B2 4150              subi R20,1
 01B4 5040              sbci R21,0
 01B6           L18:
 01B6                   .dbline 134
 01B6 4030              cpi R20,0
 01B8 4507              cpc R20,R21
 01BA 99F7              brne L15
 01BC           X2:
 01BC                   .dbline -2
 01BC           L14:
 01BC                   .dbline 0 ; func end
 01BC 0C940000          xjmp pop_xgsetF00C
 01C0                   .dbsym r t 10 i
 01C0                   .dbsym r i 20 i
 01C0                   .dbsym r pBuffer 22 pki
 01C0                   .dbsym r num 10 i
 01C0                   .dbend
 01C0                   .dbfunc e WriteMenu _WriteMenu fV
 01C0           ;              t -> R10
 01C0           ;              i -> R22
 01C0           ;        pBuffer -> R20,R21
                        .even
 01C0           _WriteMenu::
 01C0 0E940000          xcall push_xgsetF00C
 01C4 A801              movw R20,R16
 01C6                   .dbline -1
 01C6                   .dbline 151
 01C6           ;       
 01C6           ; }
 01C6           ; 
 01C6           ; //=================================================
 01C6           ; //描述:写菜单函数,本程序使用的LCD规格为 16 * 2
 01C6           ; //入口:菜单数组首地址
 01C6           ; //出口:无
 01C6           ; //=================================================
 01C6           ; void  WriteMenu(const uchar *pBuffer)
 01C6           ; {
 01C6                   .dbline 153
 01C6           ;       uchar   i,t;
 01C6           ;       writecom(0x80);   //数据地址
 01C6 00E8              ldi R16,128
 01C8 4FDF              xcall _writecom
 01CA                   .dbline 155
 01CA           ;       
 01CA           ;       PORTA|=(1<<RS);
 01CA DD9A              sbi 0x1b,5
 01CC                   .dbline 156
 01CC           ;       PORTA&=~(1<<RW);
 01CC DE98              cbi 0x1b,6
 01CE                   .dbline 157
 01CE           ;       s_ms(50);
 01CE 02E3              ldi R16,50
 01D0 10E0              ldi R17,0
 01D2 16DF              xcall _s_ms
 01D4                   .dbline 158
 01D4           ;       for(i=0;i<16;i++)
 01D4 6627              clr R22
 01D6 0BC0              xjmp L23
 01D8           L20:
 01D8                   .dbline 159
 01D8           ;       {
 01D8                   .dbline 160
 01D8           ;               t = *pBuffer;
 01D8 FA01              movw R30,R20
 01DA A690              elpm R10,Z
 01DC                   .dbline 161
 01DC           ;               PORTD = t;
 01DC A2BA              out 0x12,R10
 01DE                   .dbline 162
 01DE           ;               PORTA|=(1<<EN);
 01DE DF9A              sbi 0x1b,7
 01E0                   .dbline 163
 01E0           ;               s_ms(50);
 01E0 02E3              ldi R16,50
 01E2 10E0              ldi R17,0
 01E4 0DDF              xcall _s_ms
 01E6                   .dbline 164
 01E6           ;               PORTA&=~(1<<EN);                                
 01E6 DF98              cbi 0x1b,7
 01E8                   .dbline 165
 01E8           ;               pBuffer++;
 01E8 4F5F              subi R20,255  ; offset = 1
 01EA 5F4F              sbci R21,255
 01EC                   .dbline 166
 01EC           ;       }
 01EC           L21:
 01EC                   .dbline 158
 01EC 6395              inc R22
 01EE           L23:
 01EE                   .dbline 158
 01EE 6031              cpi R22,16
 01F0 98F3              brlo L20
 01F2           X3:
 01F2                   .dbline 167
 01F2           ;       writecom(0xC0);
 01F2 00EC              ldi R16,192
 01F4 39DF              xcall _writecom
 01F6                   .dbline 169
 01F6           ; 
 01F6           ;       PORTA|=(1<<RS);
 01F6 DD9A              sbi 0x1b,5
 01F8                   .dbline 170
 01F8           ;       PORTA&=~(1<<RW);
 01F8 DE98              cbi 0x1b,6
 01FA                   .dbline 171
 01FA           ;       s_ms(50);       
 01FA 02E3              ldi R16,50
 01FC 10E0              ldi R17,0
 01FE 00DF              xcall _s_ms
 0200                   .dbline 172
 0200           ;       for(i=0;i<16;i++)
 0200 6627              clr R22
 0202 0BC0              xjmp L27
 0204           L24:
 0204                   .dbline 173
 0204           ;       {

⌨️ 快捷键说明

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