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

📄 cw1.lis

📁 实现无线控制功能
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0046                   .dbline 47
 0046           ;        DDRD  = 0x00; 
 0046 21BA              out 0x11,R2
 0048                   .dbline -2
 0048           L11:
 0048                   .dbline 0 ; func end
 0048 0895              ret
 004A                   .dbend
 004A                   .dbfunc e uart0_init _uart0_init fV
                        .even
 004A           _uart0_init::
 004A                   .dbline -1
 004A                   .dbline 50
 004A           ;         }
 004A           ; void uart0_init(void)
 004A           ;       {
 004A                   .dbline 51
 004A           ;        UCSRB = 0x00; //disable while setting baud rate
 004A 2224              clr R2
 004C 2AB8              out 0xa,R2
 004E                   .dbline 52
 004E           ;        UCSRA = 0x00;
 004E 2BB8              out 0xb,R2
 0050                   .dbline 53
 0050           ;        UCSRC = BIT(URSEL) | 0x06;
 0050 86E8              ldi R24,134
 0052 80BD              out 0x20,R24
 0054                   .dbline 54
 0054           ;        UBRRL = 0x67; //set baud rate lo6719
 0054 87E6              ldi R24,103
 0056 89B9              out 0x9,R24
 0058                   .dbline 55
 0058           ;        UBRRH = 0x00; //set baud rate hi
 0058 20BC              out 0x20,R2
 005A                   .dbline 56
 005A           ;        UCSRB = 0x08;
 005A 88E0              ldi R24,8
 005C 8AB9              out 0xa,R24
 005E                   .dbline -2
 005E           L12:
 005E                   .dbline 0 ; func end
 005E 0895              ret
 0060                   .dbend
 0060                   .dbfunc e uart_transmit_byte _uart_transmit_byte fV
 0060           ;           data -> R16
                        .even
 0060           _uart_transmit_byte::
 0060                   .dbline -1
 0060                   .dbline 60
 0060           ;       }    
 0060           ; //发送单字节字符
 0060           ; void  uart_transmit_byte( unsigned char data)
 0060           ;      {
 0060           L14:
 0060                   .dbline 61
 0060           L15:
 0060                   .dbline 61
 0060           ;        while(!(UCSRA&DATA_REGISTER_EMPTY));
 0060 5D9B              sbis 0xb,5
 0062 FECF              rjmp L14
 0064                   .dbline 62
 0064           ;        UDR=data;
 0064 0CB9              out 0xc,R16
 0066                   .dbline -2
 0066           L13:
 0066                   .dbline 0 ; func end
 0066 0895              ret
 0068                   .dbsym r data 16 c
 0068                   .dbend
 0068                   .dbfunc e timer2_init _timer2_init fV
                        .even
 0068           _timer2_init::
 0068                   .dbline -1
 0068                   .dbline 69
 0068           ;      }        
 0068           ;        
 0068           ; //TIMER2 initialize - prescale:8
 0068           ; // desired value: 100uSec
 0068           ; // actual value: 100.000uSec (0.0%)
 0068           ; void timer2_init(void)
 0068           ; {
 0068                   .dbline 70
 0068           ;  TCCR2 = 0x00; //stop
 0068 2224              clr R2
 006A 25BC              out 0x25,R2
 006C                   .dbline 71
 006C           ;  ASSR  = 0x00; //set async mode
 006C 22BC              out 0x22,R2
 006E                   .dbline 72
 006E           ;  TCNT2 = 0xCE; //setup
 006E 8EEC              ldi R24,206
 0070 84BD              out 0x24,R24
 0072                   .dbline 73
 0072           ;  OCR2  = 0x32;
 0072 82E3              ldi R24,50
 0074 83BD              out 0x23,R24
 0076                   .dbline 74
 0076           ;  TCCR2 = 0x02; //start
 0076 82E0              ldi R24,2
 0078 85BD              out 0x25,R24
 007A                   .dbline -2
 007A           L17:
 007A                   .dbline 0 ; func end
 007A 0895              ret
 007C                   .dbend
                        .area vector(rom, abs)
                        .org 20
 0014 0C943E00          jmp _timer2_ovf_isr
                        .area text(rom, con, rel)
 007C                   .dbfile C:\DOCUME~1\Administrator\桌面\无线视频车\程序\cw1.c
 007C                   .dbfunc e timer2_ovf_isr _timer2_ovf_isr fV
                        .even
 007C           _timer2_ovf_isr::
 007C 0A92              st -y,R0
 007E 1A92              st -y,R1
 0080 2A92              st -y,R2
 0082 3A92              st -y,R3
 0084 4A92              st -y,R4
 0086 5A92              st -y,R5
 0088 8A93              st -y,R24
 008A EA93              st -y,R30
 008C 0FB6              in R0,0x3f
 008E 0A92              st -y,R0
 0090 0E940000          xcall push_gset2
 0094                   .dbline -1
 0094                   .dbline 79
 0094           ; }
 0094           ; 
 0094           ; #pragma interrupt_handler timer2_ovf_isr:6
 0094           ; void timer2_ovf_isr(void)
 0094           ; {
 0094                   .dbline 80
 0094           ;  TCNT2 = 0xCE; //reload counter value
 0094 8EEC              ldi R24,206
 0096 84BD              out 0x24,R24
 0098                   .dbline 81
 0098           ;  if(count<65535){++count;}
 0098 4FEF              ldi R20,255
 009A 5FEF              ldi R21,255
 009C 60E0              ldi R22,0
 009E 70E0              ldi R23,0
 00A0 40900C00          lds R4,_count+2
 00A4 50900D00          lds R5,_count+2+1
 00A8 20900A00          lds R2,_count
 00AC 30900B00          lds R3,_count+1
 00B0 2416              cp R2,R20
 00B2 3506              cpc R3,R21
 00B4 4606              cpc R4,R22
 00B6 5706              cpc R5,R23
 00B8 80F4              brsh L19
 00BA                   .dbline 81
 00BA                   .dbline 81
 00BA 41E0              ldi R20,1
 00BC 50E0              ldi R21,0
 00BE 60E0              ldi R22,0
 00C0 70E0              ldi R23,0
 00C2 240E              add R2,R20
 00C4 351E              adc R3,R21
 00C6 461E              adc R4,R22
 00C8 571E              adc R5,R23
 00CA 30920B00          sts _count+1,R3
 00CE 20920A00          sts _count,R2
 00D2 50920D00          sts _count+2+1,R5
 00D6 40920C00          sts _count+2,R4
 00DA                   .dbline 81
 00DA           L19:
 00DA                   .dbline 82
 00DA 4FEF              ldi R20,255
 00DC 5FEF              ldi R21,255
 00DE 60E0              ldi R22,0
 00E0 70E0              ldi R23,0
 00E2 40900800          lds R4,_count1+2
 00E6 50900900          lds R5,_count1+2+1
 00EA 20900600          lds R2,_count1
 00EE 30900700          lds R3,_count1+1
 00F2 2416              cp R2,R20
 00F4 3506              cpc R3,R21
 00F6 4606              cpc R4,R22
 00F8 5706              cpc R5,R23
 00FA 80F4              brsh L21
 00FC                   .dbline 82
 00FC                   .dbline 82
 00FC 41E0              ldi R20,1
 00FE 50E0              ldi R21,0
 0100 60E0              ldi R22,0
 0102 70E0              ldi R23,0
 0104 240E              add R2,R20
 0106 351E              adc R3,R21
 0108 461E              adc R4,R22
 010A 571E              adc R5,R23
 010C 30920700          sts _count1+1,R3
 0110 20920600          sts _count1,R2
 0114 50920900          sts _count1+2+1,R5
 0118 40920800          sts _count1+2,R4
 011C                   .dbline 82
 011C           L21:
 011C                   .dbline -2
 011C           L18:
 011C 0E940000          xcall pop_gset2
 0120 0990              ld R0,y+
 0122 0FBE              out 0x3f,R0
 0124 E991              ld R30,y+
 0126 8991              ld R24,y+
 0128 5990              ld R5,y+
 012A 4990              ld R4,y+
 012C 3990              ld R3,y+
 012E 2990              ld R2,y+
 0130 1990              ld R1,y+
 0132 0990              ld R0,y+
 0134                   .dbline 0 ; func end
 0134 1895              reti
 0136                   .dbend
 0136                   .dbfunc e eeprom_writ _eeprom_writ fV
 0136           ;             sj -> R18
 0136           ;             dz -> R16
                        .even
 0136           _eeprom_writ::
 0136                   .dbline -1
 0136                   .dbline 86
 0136           ;  if(count1<65535){++count1;}
 0136           ; }  
 0136           ; //==============================================================================
 0136           ; void eeprom_writ(uchar dz,uchar sj) //写EEPROM  
 0136           ; {
 0136                   .dbline 87
 0136           ;      CLI(); //清总中断
 0136 F894              cli
 0138           L24:
 0138                   .dbline 88
 0138                   .dbline 88
 0138                   .dbline 88
 0138           L25:
 0138                   .dbline 88
 0138           ;        while(EECR & (1<<EEWE)){;}
 0138 E199              sbic 0x1c,1
 013A FECF              rjmp L24
 013C                   .dbline 89
 013C           ;        EEARH=0x00;
 013C 2224              clr R2
 013E 2FBA              out 0x1f,R2
 0140                   .dbline 90
 0140           ;        EEARL=dz;
 0140 0EBB              out 0x1e,R16
 0142                   .dbline 91
 0142           ;        EEDR=sj;
 0142 2DBB              out 0x1d,R18
 0144                   .dbline 92
 0144           ;        EECR |= (1<<EEMWE);
 0144 E29A              sbi 0x1c,2
 0146                   .dbline 93
 0146           ;        EECR |= (1<<EEWE);
 0146 E19A              sbi 0x1c,1
 0148                   .dbline 94
 0148           ;      SEI();
 0148 7894              sei
 014A                   .dbline -2
 014A           L23:
 014A                   .dbline 0 ; func end
 014A 0895              ret
 014C                   .dbsym r sj 18 c
 014C                   .dbsym r dz 16 c
 014C                   .dbend
 014C                   .dbfunc e eeprom_read _eeprom_read fc
 014C           ;             dz -> R16
                        .even
 014C           _eeprom_read::
 014C                   .dbline -1
 014C                   .dbline 98
 014C           ; }
 014C           ; //==============================================================================
 014C           ; uchar eeprom_read(uchar dz)     //读EEPROM
 014C           ; {
 014C                   .dbline 99
 014C           ;     CLI(); //清总中断
 014C F894              cli
 014E           L28:
 014E                   .dbline 100
 014E                   .dbline 100
 014E                   .dbline 100
 014E           L29:
 014E                   .dbline 100
 014E           ;       while(EECR & (1<<EEWE)){;}
 014E E199              sbic 0x1c,1
 0150 FECF              rjmp L28
 0152                   .dbline 101
 0152           ;       EEARH=0x00;
 0152 2224              clr R2
 0154 2FBA              out 0x1f,R2
 0156                   .dbline 102
 0156           ;       EEARL=dz;
 0156 0EBB              out 0x1e,R16
 0158                   .dbline 103
 0158           ;       EECR |= (1<<EERE);
 0158 E09A              sbi 0x1c,0
 015A                   .dbline 104
 015A           ;       SEI();
 015A 7894              sei
 015C                   .dbline 105
 015C           ;       return(EEDR); 
 015C 0DB3              in R16,0x1d
 015E                   .dbline -2
 015E           L27:
 015E                   .dbline 0 ; func end
 015E 0895              ret
 0160                   .dbsym r dz 16 c
 0160                   .dbend
 0160                   .dbfunc e init_devices _init_devices fV
                        .even
 0160           _init_devices::
 0160                   .dbline -1
 0160                   .dbline 108
 0160           ; }  
 0160           ; void init_devices(void)
 0160           ; {
 0160                   .dbline 110
 0160           ;  //stop errant interrupts until set up
 0160           ;  CLI(); //disable all interrupts
 0160 F894              cli
 0162                   .dbline 111
 0162           ;  port_init();
 0162 67DF              xcall _port_init
 0164                   .dbline 112
 0164           ;  timer2_init();
 0164 81DF              xcall _timer2_init
 0166                   .dbline 113
 0166           ;  uart0_init();
 0166 71DF              xcall _uart0_init

⌨️ 快捷键说明

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