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

📄 feedis_uart.lis

📁 AVR系列单片机ATMEGA64开发的LED显示屏程序 内容包括ATMEGA64大部分资源的初始化程序
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 02E8                   .dbline 178
 02E8           L65:
 02E8                   .dbline 178
 02E8           ;       }       
 02E8           ; }
 02E8           ; 
 02E8           ; 
 02E8           ; void uart0_txd(uchar x)
 02E8           ; { while((UCSR0A&0X20)==0);
 02E8 5D9B              sbis 0xb,5
 02EA FECF              rjmp L64
 02EC                   .dbline 179
 02EC           ;   UDR0=x;
 02EC 0CB9              out 0xc,R16
 02EE                   .dbline -2
 02EE           L63:
 02EE                   .dbline 0 ; func end
 02EE 0895              ret
 02F0                   .dbsym r x 16 c
 02F0                   .dbend
 02F0                   .dbfunc e init_USART _init_USART fV
                        .even
 02F0           _init_USART::
 02F0                   .dbline -1
 02F0                   .dbline 183
 02F0           ; 
 02F0           ; }
 02F0           ; void init_USART(void)//USART 初始化
 02F0           ; {
 02F0                   .dbline 185
 02F0           ;     //USART 9600 8, n,1  PC上位机软件(超级终端等)也要设成同样的设置才能通讯
 02F0           ;       UCSR0B = 0x00;   //disable while setting baud rate
 02F0 2224              clr R2
 02F2 2AB8              out 0xa,R2
 02F4                   .dbline 186
 02F4           ;       UCSR0A = 0x00;
 02F4 2BB8              out 0xb,R2
 02F6                   .dbline 187
 02F6           ;       UCSR0C =  0x06;
 02F6 86E0              ldi R24,6
 02F8 80939500          sts 149,R24
 02FC                   .dbline 189
 02FC           ;     //异步,8位数据,无奇偶校验,一个停止位,无倍速
 02FC           ;     UBRR0L= (F_CPU/BAUDRATE/16-1)%256;
 02FC 8FE5              ldi R24,95
 02FE 89B9              out 0x9,R24
 0300                   .dbline 190
 0300           ;     UBRR0H= (F_CPU/BAUDRATE/16-1)/256;
 0300 20929000          sts 144,R2
 0304                   .dbline 191
 0304           ;     UCSR0B = (1<<RXCIE0)|(1<<RXEN0)|(1<<TXEN0);
 0304 88E9              ldi R24,152
 0306 8AB9              out 0xa,R24
 0308                   .dbline -2
 0308           L67:
 0308                   .dbline 0 ; func end
 0308 0895              ret
 030A                   .dbend
 030A                   .dbfunc e port_init _port_init fV
                        .even
 030A           _port_init::
 030A                   .dbline -1
 030A                   .dbline 196
 030A           ;     //使能接收中断,使能接收,使能发送
 030A           ; }
 030A           ; 
 030A           ; void port_init(void)
 030A           ; {
 030A                   .dbline 197
 030A           ; PORTA = 0x00;
 030A 2224              clr R2
 030C 2BBA              out 0x1b,R2
 030E                   .dbline 198
 030E           ;  DDRA  = 0xff;
 030E 8FEF              ldi R24,255
 0310 8ABB              out 0x1a,R24
 0312                   .dbline 199
 0312           ;  PORTB = 0xAD;
 0312 8DEA              ldi R24,173
 0314 88BB              out 0x18,R24
 0316                   .dbline 200
 0316           ;  DDRB  = 0xF7;
 0316 87EF              ldi R24,247
 0318 87BB              out 0x17,R24
 031A                   .dbline 201
 031A           ;  PORTC = 0xFF; //m103 output only
 031A 8FEF              ldi R24,255
 031C 85BB              out 0x15,R24
 031E                   .dbline 202
 031E           ;  DDRC  = 0xFF;
 031E 84BB              out 0x14,R24
 0320                   .dbline 203
 0320           ;  PORTD = 0x05;
 0320 85E0              ldi R24,5
 0322 82BB              out 0x12,R24
 0324                   .dbline 204
 0324           ;  DDRD  = 0xFA;
 0324 8AEF              ldi R24,250
 0326 81BB              out 0x11,R24
 0328                   .dbline 205
 0328           ;  PORTE = 0xFE;
 0328 8EEF              ldi R24,254
 032A 83B9              out 0x3,R24
 032C                   .dbline 206
 032C           ;  DDRE  = 0xFE;
 032C 82B9              out 0x2,R24
 032E                   .dbline 207
 032E           ;  PORTF = 0x0F;
 032E 8FE0              ldi R24,15
 0330 80936200          sts 98,R24
 0334                   .dbline 208
 0334           ;  DDRF  = 0x0F;
 0334 80936100          sts 97,R24
 0338                   .dbline 209
 0338           ;  PORTG = 0x1F;
 0338 8FE1              ldi R24,31
 033A 80936500          sts 101,R24
 033E                   .dbline 210
 033E           ;  DDRG  = 0x0F;
 033E 8FE0              ldi R24,15
 0340 80936400          sts 100,R24
 0344                   .dbline -2
 0344           L68:
 0344                   .dbline 0 ; func end
 0344 0895              ret
 0346                   .dbend
 0346                   .dbfunc e timer1_init _timer1_init fV
                        .even
 0346           _timer1_init::
 0346                   .dbline -1
 0346                   .dbline 215
 0346           ; }
 0346           ; 
 0346           ; 
 0346           ; void timer1_init(void)
 0346           ; {
 0346                   .dbline 216
 0346           ;  TCCR1B = 0x00; //stop
 0346 2224              clr R2
 0348 2EBC              out 0x2e,R2
 034A                   .dbline 217
 034A           ;  TCNT1H = 0xFF; //setup
 034A 8FEF              ldi R24,255
 034C 8DBD              out 0x2d,R24
 034E                   .dbline 218
 034E           ;  TCNT1L = 0x0C;
 034E 8CE0              ldi R24,12
 0350 8CBD              out 0x2c,R24
 0352                   .dbline 219
 0352           ;  OCR1AH = 0x00;
 0352 2BBC              out 0x2b,R2
 0354                   .dbline 220
 0354           ;  OCR1AL = 0xF4;
 0354 84EF              ldi R24,244
 0356 8ABD              out 0x2a,R24
 0358                   .dbline 221
 0358           ;  OCR1BH = 0x00;
 0358 29BC              out 0x29,R2
 035A                   .dbline 222
 035A           ;  OCR1BL = 0xF4;
 035A 88BD              out 0x28,R24
 035C                   .dbline 223
 035C           ;  OCR1CH = 0x00;
 035C 20927900          sts 121,R2
 0360                   .dbline 224
 0360           ;  OCR1CL = 0xF4;
 0360 80937800          sts 120,R24
 0364                   .dbline 225
 0364           ;  ICR1H  = 0x00;
 0364 27BC              out 0x27,R2
 0366                   .dbline 226
 0366           ;  ICR1L  = 0xF4;
 0366 86BD              out 0x26,R24
 0368                   .dbline 227
 0368           ;  TCCR1A = 0x00;
 0368 2FBC              out 0x2f,R2
 036A                   .dbline 228
 036A           ;  TCCR1B = 0x05; //start Timer
 036A 85E0              ldi R24,5
 036C 8EBD              out 0x2e,R24
 036E                   .dbline -2
 036E           L69:
 036E                   .dbline 0 ; func end
 036E 0895              ret
 0370                   .dbend
 0370                   .dbfunc e spi_inith _spi_inith fV
                        .even
 0370           _spi_inith::
 0370                   .dbline -1
 0370                   .dbline 232
 0370           ; }
 0370           ; 
 0370           ; void spi_inith(void)
 0370           ; {// DDRB|=(1<<0)|(1<<1)|(1<<2);//ss sck mosi
 0370                   .dbline 235
 0370           ;   // PORTB|=(1<<0)|(1<<1)|(1<<2);
 0370           ;    
 0370           ;   DDRB|=(1<<0)|(1<<1)|(1<<2);
 0370 87B3              in R24,0x17
 0372 8760              ori R24,7
 0374 87BB              out 0x17,R24
 0376                   .dbline 236
 0376           ;    PORTB|=(1<<0)|(1<<1)|(1<<2);
 0376 88B3              in R24,0x18
 0378 8760              ori R24,7
 037A 88BB              out 0x18,R24
 037C                   .dbline 238
 037C           ;    
 037C           ;   SPCR=0X70; //低先发
 037C 80E7              ldi R24,112
 037E 8DB9              out 0xd,R24
 0380                   .dbline 240
 0380           ;    // SPCR=0X50; //164高先发
 0380           ;   SPSR|=(1<<SPI2X);//倍速度
 0380 709A              sbi 0xe,0
 0382                   .dbline -2
 0382           L70:
 0382                   .dbline 0 ; func end
 0382 0895              ret
 0384                   .dbend
 0384                   .dbfunc e main _main fI
 0384           ;            ptr -> <dead>
 0384           ;          temp1 -> <dead>
 0384           ;           temp -> <dead>
 0384           ;     discounthh -> R12,R13
 0384           ;   flag_control -> R10
                        .even
 0384           _main::
 0384                   .dbline -1
 0384                   .dbline 243
 0384           ; }
 0384           ; int main(void)
 0384           ; {
 0384                   .dbline 246
 0384           ;       uchar temp;
 0384           ;       uint temp1;
 0384           ;       uint discounthh=0;
 0384 CC24              clr R12
 0386 DD24              clr R13
 0388                   .dbline 248
 0388           ;       uchar *ptr;
 0388           ;     uchar flag_control=0;
 0388 AA24              clr R10
 038A                   .dbline 249
 038A           ;        CLI(); //disable all interrupts
 038A F894              cli
 038C                   .dbline 250
 038C           ;        port_init();
 038C BEDF              xcall _port_init
 038E                   .dbline 251
 038E           ;        spi_inith();
 038E F0DF              xcall _spi_inith
 0390                   .dbline 252
 0390           ;     FLAG=0;
 0390 2224              clr R2
 0392 20920000          sts _FLAG,R2
 0396                   .dbline 253
 0396           ;        ISDstatus = 0;
 0396 20920000          sts _ISDstatus,R2
 039A                   .dbline 254
 039A           ;        SPEAK = 1;
 039A 81E0              ldi R24,1
 039C 80930100          sts _SPEAK,R24
 03A0                   .dbline 256
 03A0           ; //     countwait = 0;
 03A0           ;       init_USART();
 03A0 A7DF              xcall _init_USART
 03A2                   .dbline 257
 03A2           ;       EICRA = 0x02; //extended ext ints   falling edge 
 03A2 82E0              ldi R24,2
 03A4 80936A00          sts 106,R24
 03A8                   .dbline 258
 03A8           ;       EICRB = 0x00; //extended ext ints
 03A8 2224              clr R2
 03AA 2ABE              out 0x3a,R2
 03AC                   .dbline 259
 03AC           ;       EIMSK = 0x01;
 03AC 81E0              ldi R24,1
 03AE 89BF              out 0x39,R24
 03B0                   .dbline 260
 03B0           ;       SEI();  //使能全局中断
 03B0 7894              sei
 03B2                   .dbline 261
 03B2           ;       waitms(10);     
 03B2 0AE0              ldi R16,10
 03B4 10E0              ldi R17,0
 03B6 20E0              ldi R18,0
 03B8 30E0              ldi R19,0
 03BA 0E940000          xcall _waitms
 03BE                   .dbline 262
 03BE           ;       light = RTEEPROMread(12);
 03BE 0CE0              ldi R16,12
 03C0 10E0              ldi R17,0
 03C2 0E940000          xcall _RTEEPROMread
 03C6 00930200          sts _light,R16
 03CA                   .dbline 263
 03CA           ;       if(light>56)light=56;
 03CA 88E3              ldi R24,56
 03CC 8017              cp R24,R16
 03CE 10F4              brsh L72
 03D0                   .dbline 263
 03D0 80930200          sts _light,R24
 03D4           L72:
 03D4                   .dbline 266
 03D4           ;       //spi_init();
 03D4           ;       ///////////////////////////////////////
 03D4           ;       FLAG=1;
 03D4 81E0              ldi R24,1
 03D6 80930000          sts _FLAG,R24
 03DA                   .dbline 267
 03DA           ;       receivebox[0]='A';
 03DA 81E4              ldi R24,65
 03DC 80930300          sts _receivebox,R24
 03E0                   .dbline 269
 03E0           ;       
 03E0           ;       receivebox[1]=0XF0;
 03E0 80EF              ldi R24,240
 03E2 80930400          sts _receivebox+1,R24
 03E6                   .dbline 270
 03E6           ;       ISDstatus=0;
 03E6 2224              clr R2
 03E8 20920000          sts _ISDstatus,R2
 03EC                   .dbline 271
 03EC           ;       SPEAK = 1;
 03EC 81E0              ldi R24,1
 03EE 80930100          sts _SPEAK,R24
 03F2                   .dbline 276
 03F2           ;       //for(temp1=0;temp1<3072;temp1++)
 03F2           ;       //dis[temp1]=0xff;
 03F2           ;       ///////////////////////////////////////
 03F2           ; //    uart0_txd(0xaa);        
 03F2           ;    dip=0;
 03F2 20920F00          sts _dip,R2
 03F6 D3C0              xjmp L76
 03F8           L75:
 03F8                   .dbline 279
 03F8           ;    
 03F8           ;       while (1)
 03F8           ;     { 
 03F8                   .dbline 280
 03F8           ;       if(FLAG)//串口中断收到有效数据FLAG为1
 03F8 20900000          lds R2,_FLAG
 03FC 2220              tst R2
 03FE 29F0              breq L78
 0400                   .dbline 281
 0400           ;       {
 0400                   .dbline 282
 0400           ;           hanzi();    //为显示准备好点阵数据
 0400 0E940000          xcall _hanzi
 0404                   .dbline 283
 0404           ;             FLAG = 0;
 0404 2224              clr R2
 0406 20920000          sts _FLAG,R2
 040A                   .dbline 284
 040A           ;       }
 040A           L78:
 040A                   .dbline 285
 040A           ;         ledscreendis(light);//显示屏扫描程序
 040A 00910200          lds R16,_light
 040E 0E940000          xcall _ledscreendis
 0412                   .dbline 287
 0412           ;          // ledscreendis(light);//显示屏扫描程序
 0412           ;           if(flag_control==0)
 0412 AA20              tst R10
 0414 59F4              brne L80
 0416                   .dbline 288
 0416           ;               {dip++;
 0416                   .dbline 288
 0416 80910F00          lds R24,_dip
 041A 8F5F              subi R24,255    ; addi 1

⌨️ 快捷键说明

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