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

📄 1602_main.lis

📁 10K到5MHz的频率测量
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0102 04E1              ldi R16,20
 0104 10E0              ldi R17,0
 0106 7CDF              xcall _s_ms
 0108                   .dbline 85
 0108           ;       PORTB|=(1<<EN);    //EN=1
 0108 C79A              sbi 0x18,7
 010A                   .dbline 86
 010A           ;       s_ms(20);
 010A 04E1              ldi R16,20
 010C 10E0              ldi R17,0
 010E 78DF              xcall _s_ms
 0110                   .dbline 87
 0110           ;       PORTA = data;      //输出数据
 0110 ABBA              out 0x1b,R10
 0112                   .dbline 88
 0112           ;       s_ms(20);
 0112 04E1              ldi R16,20
 0114 10E0              ldi R17,0
 0116 74DF              xcall _s_ms
 0118                   .dbline 89
 0118           ;       PORTB&=~(1<<EN);   //EN=0
 0118 C798              cbi 0x18,7
 011A                   .dbline 90
 011A           ;       s_ms(20);
 011A 04E1              ldi R16,20
 011C 10E0              ldi R17,0
 011E 70DF              xcall _s_ms
 0120                   .dbline -2
 0120           L12:
 0120                   .dbline 0 ; func end
 0120 A990              ld R10,y+
 0122 0895              ret
 0124                   .dbsym r data 10 c
 0124                   .dbend
 0124                   .dbfunc e readdata _readdata fc
 0124           ;           temp -> R10
                        .even
 0124           _readdata::
 0124 AA92              st -y,R10
 0126                   .dbline -1
 0126                   .dbline 96
 0126           ; }
 0126           ; 
 0126           ; 
 0126           ; //读数据
 0126           ; uchar readdata(void)
 0126           ; {
 0126                   .dbline 98
 0126           ;       uchar temp;
 0126           ;       busy();
 0126 75DF              xcall _busy
 0128                   .dbline 99
 0128           ;       s_ms(20);
 0128 04E1              ldi R16,20
 012A 10E0              ldi R17,0
 012C 69DF              xcall _s_ms
 012E                   .dbline 100
 012E           ;       PORTB|=(1<<RS);  //RS=1
 012E C59A              sbi 0x18,5
 0130                   .dbline 101
 0130           ;       s_ms(20);
 0130 04E1              ldi R16,20
 0132 10E0              ldi R17,0
 0134 65DF              xcall _s_ms
 0136                   .dbline 102
 0136           ;       PORTB|=(1<<RW);  //RW=1
 0136 C69A              sbi 0x18,6
 0138                   .dbline 103
 0138           ;       s_ms(20);
 0138 04E1              ldi R16,20
 013A 10E0              ldi R17,0
 013C 61DF              xcall _s_ms
 013E                   .dbline 104
 013E           ;       PORTB|=(1<<EN);  //EN=1
 013E C79A              sbi 0x18,7
 0140                   .dbline 105
 0140           ;       s_ms(20);
 0140 04E1              ldi R16,20
 0142 10E0              ldi R17,0
 0144 5DDF              xcall _s_ms
 0146                   .dbline 106
 0146           ;       DDRA=0x00;       //A端口变输入
 0146 2224              clr R2
 0148 2ABA              out 0x1a,R2
 014A                   .dbline 107
 014A           ;       s_ms(20);
 014A 04E1              ldi R16,20
 014C 10E0              ldi R17,0
 014E 58DF              xcall _s_ms
 0150                   .dbline 108
 0150           ;       temp = PINA;     //读A端口
 0150 A9B2              in R10,0x19
 0152                   .dbline 109
 0152           ;       s_ms(20);
 0152 04E1              ldi R16,20
 0154 10E0              ldi R17,0
 0156 54DF              xcall _s_ms
 0158                   .dbline 110
 0158           ;       DDRA=0xff;       //A端口变输出
 0158 8FEF              ldi R24,255
 015A 8ABB              out 0x1a,R24
 015C                   .dbline 111
 015C           ;       s_ms(20);
 015C 04E1              ldi R16,20
 015E 10E0              ldi R17,0
 0160 4FDF              xcall _s_ms
 0162                   .dbline 112
 0162           ;       PORTB&=~(1<<EN); //EN=0
 0162 C798              cbi 0x18,7
 0164                   .dbline 113
 0164           ;       s_ms(20);
 0164 04E1              ldi R16,20
 0166 10E0              ldi R17,0
 0168 4BDF              xcall _s_ms
 016A                   .dbline 114
 016A           ;       return temp;    
 016A 0A2D              mov R16,R10
 016C                   .dbline -2
 016C           L13:
 016C                   .dbline 0 ; func end
 016C A990              ld R10,y+
 016E 0895              ret
 0170                   .dbsym r temp 10 c
 0170                   .dbend
 0170                   .dbfunc e WriteCGRAM _WriteCGRAM fV
 0170           ;              t -> R10,R11
 0170           ;              i -> R20,R21
 0170           ;        pBuffer -> R22,R23
 0170           ;            num -> R10,R11
                        .even
 0170           _WriteCGRAM::
 0170 0E940000          xcall push_xgsetF00C
 0174 B901              movw R22,R18
 0176 5801              movw R10,R16
 0178                   .dbline -1
 0178                   .dbline 124
 0178           ; }
 0178           ; 
 0178           ; //=================================================
 0178           ; // 描述: 写LCD内部CGRAM函数
 0178           ; // 入口: ‘num’要写的数据个数
 0178           ; //        ‘pbuffer’要写的数据的首地址
 0178           ; // 出口: 无
 0178           ; //================================================
 0178           ; void  WriteCGRAM(uint num, const uint *pBuffer)
 0178           ; {
 0178                   .dbline 126
 0178           ;       uint    i,t;
 0178           ;       writecom(0x40);
 0178 00E4              ldi R16,64
 017A 73DF              xcall _writecom
 017C                   .dbline 127
 017C           ;       PORTB|=(1<<RS);
 017C C59A              sbi 0x18,5
 017E                   .dbline 128
 017E           ;       PORTB&=~(1<<RW);
 017E C698              cbi 0x18,6
 0180                   .dbline 129
 0180           ;       for(i=num;i!=0;i--)
 0180 A501              movw R20,R10
 0182 0AC0              xjmp L18
 0184           L15:
 0184                   .dbline 130
 0184           ;       {
 0184                   .dbline 131
 0184           ;               t = *pBuffer;
 0184 FB01              movw R30,R22
 0186 A590              lpm R10,Z+
 0188 B490              lpm R11,Z
 018A                   .dbline 132
 018A           ;               PORTB|=(1<<EN);
 018A C79A              sbi 0x18,7
 018C                   .dbline 133
 018C           ;               PORTA = t;
 018C ABBA              out 0x1b,R10
 018E                   .dbline 134
 018E           ;               PORTB&=~(1<<EN);                                
 018E C798              cbi 0x18,7
 0190                   .dbline 135
 0190           ;               pBuffer++;
 0190 6E5F              subi R22,254  ; offset = 2
 0192 7F4F              sbci R23,255
 0194                   .dbline 136
 0194           ;       }
 0194           L16:
 0194                   .dbline 129
 0194 4150              subi R20,1
 0196 5040              sbci R21,0
 0198           L18:
 0198                   .dbline 129
 0198 4030              cpi R20,0
 019A 4507              cpc R20,R21
 019C 99F7              brne L15
 019E           X2:
 019E                   .dbline -2
 019E           L14:
 019E                   .dbline 0 ; func end
 019E 0C940000          xjmp pop_xgsetF00C
 01A2                   .dbsym r t 10 i
 01A2                   .dbsym r i 20 i
 01A2                   .dbsym r pBuffer 22 pki
 01A2                   .dbsym r num 10 i
 01A2                   .dbend
 01A2                   .dbfunc e WriteMenu _WriteMenu fV
 01A2           ;              t -> R10
 01A2           ;              i -> R22
 01A2           ;        pBuffer -> R20,R21
                        .even
 01A2           _WriteMenu::
 01A2 0E940000          xcall push_xgsetF00C
 01A6 A801              movw R20,R16
 01A8                   .dbline -1
 01A8                   .dbline 146
 01A8           ;       
 01A8           ; }
 01A8           ; 
 01A8           ; //=================================================
 01A8           ; //描述:写菜单函数,本程序使用的LCD规格为 16 * 2
 01A8           ; //入口:菜单数组首地址
 01A8           ; //出口:无
 01A8           ; //=================================================
 01A8           ; void  WriteMenu(const uchar *pBuffer)
 01A8           ; {
 01A8                   .dbline 148
 01A8           ;       uchar   i,t;
 01A8           ;       writecom(0x80);   //数据地址
 01A8 00E8              ldi R16,128
 01AA 5BDF              xcall _writecom
 01AC                   .dbline 150
 01AC           ;       
 01AC           ;       PORTB|=(1<<RS);
 01AC C59A              sbi 0x18,5
 01AE                   .dbline 151
 01AE           ;       PORTB&=~(1<<RW);
 01AE C698              cbi 0x18,6
 01B0                   .dbline 152
 01B0           ;       s_ms(20);
 01B0 04E1              ldi R16,20
 01B2 10E0              ldi R17,0
 01B4 25DF              xcall _s_ms
 01B6                   .dbline 153
 01B6           ;       for(i=0;i<16;i++)
 01B6 6627              clr R22
 01B8 0BC0              xjmp L23
 01BA           L20:
 01BA                   .dbline 154
 01BA           ;       {
 01BA                   .dbline 155
 01BA           ;               t = *pBuffer;
 01BA FA01              movw R30,R20
 01BC A490              lpm R10,Z
 01BE                   .dbline 156
 01BE           ;               PORTA = t;
 01BE ABBA              out 0x1b,R10
 01C0                   .dbline 157
 01C0           ;               PORTB|=(1<<EN);
 01C0 C79A              sbi 0x18,7
 01C2                   .dbline 158
 01C2           ;               s_ms(20);
 01C2 04E1              ldi R16,20
 01C4 10E0              ldi R17,0
 01C6 1CDF              xcall _s_ms
 01C8                   .dbline 159
 01C8           ;               PORTB&=~(1<<EN);                                
 01C8 C798              cbi 0x18,7
 01CA                   .dbline 160
 01CA           ;               pBuffer++;
 01CA 4F5F              subi R20,255  ; offset = 1
 01CC 5F4F              sbci R21,255
 01CE                   .dbline 161
 01CE           ;       }
 01CE           L21:
 01CE                   .dbline 153
 01CE 6395              inc R22
 01D0           L23:
 01D0                   .dbline 153
 01D0 6031              cpi R22,16
 01D2 98F3              brlo L20
 01D4           X3:
 01D4                   .dbline 162
 01D4           ;       writecom(0xC0);
 01D4 00EC              ldi R16,192
 01D6 45DF              xcall _writecom
 01D8                   .dbline 164
 01D8           ; 
 01D8           ;       PORTB|=(1<<RS);
 01D8 C59A              sbi 0x18,5
 01DA                   .dbline 165
 01DA           ;       PORTB&=~(1<<RW);
 01DA C698              cbi 0x18,6
 01DC                   .dbline 166
 01DC           ;       s_ms(20);       
 01DC 04E1              ldi R16,20
 01DE 10E0              ldi R17,0
 01E0 0FDF              xcall _s_ms
 01E2                   .dbline 167
 01E2           ;       for(i=0;i<16;i++)
 01E2 6627              clr R22
 01E4 0BC0              xjmp L27
 01E6           L24:
 01E6                   .dbline 168
 01E6           ;       {
 01E6                   .dbline 169
 01E6           ;               t = *pBuffer;
 01E6 FA01              movw R30,R20
 01E8 A490              lpm R10,Z
 01EA                   .dbline 170
 01EA           ;               PORTA = t;
 01EA ABBA              out 0x1b,R10
 01EC                   .dbline 171
 01EC           ;               PORTB|=(1<<EN);
 01EC C79A              sbi 0x18,7
 01EE                   .dbline 172
 01EE           ;               s_ms(20);
 01EE 04E1              ldi R16,20
 01F0 10E0              ldi R17,0
 01F2 06DF              xcall _s_ms
 01F4                   .dbline 173
 01F4           ;               PORTB&=~(1<<EN);                                
 01F4 C798              cbi 0x18,7
 01F6                   .dbline 174
 01F6           ;               pBuffer++;
 01F6 4F5F              subi R20,255  ; offset = 1
 01F8 5F4F              sbci R21,255
 01FA                   .dbline 175
 01FA           ;       }
 01FA           L25:
 01FA                   .dbline 167
 01FA 6395              inc R22

⌨️ 快捷键说明

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