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

📄 output.lis

📁 avr单片机
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 00AA           ; 
 00AA           ; //======================================================time0 初始化
 00AA           ; //TIMER0 initialisation - prescale:32
 00AA           ; // WGM: Normal
 00AA           ; // desired value: 1KHz
 00AA           ; // actual value:  1.000KHz (0.0%)
 00AA           ; void timer0_init(void){
 00AA                   .dbline 87
 00AA           ;  TCCR0 = 0x00; //stop
 00AA 2224              clr R2
 00AC 23BE              out 0x33,R2
 00AE                   .dbline 88
 00AE           ;  ASSR  = 0x00; //set async mode//同步方式,允许更新计数,比较输出,控制寄存器
 00AE 20BE              out 0x30,R2
 00B0                   .dbline 89
 00B0           ;  TCNT0 = 0x83; //set count
 00B0 83E8              ldi R24,131
 00B2 82BF              out 0x32,R24
 00B4                   .dbline 90
 00B4           ;  OCR0  = 0x7D;
 00B4 8DE7              ldi R24,125
 00B6 81BF              out 0x31,R24
 00B8                   .dbline 91
 00B8           ;  TCCR0 = 0x05; //start timer//128分频
 00B8 85E0              ldi R24,5
 00BA 83BF              out 0x33,R24
 00BC                   .dbline -2
 00BC           L8:
 00BC                   .dbline 0 ; func end
 00BC 0895              ret
 00BE                   .dbend
                        .area vector(rom, abs)
                        .org 60
 003C 0C945F00          jmp _timer0_comp_isr
                        .area text(rom, con, rel)
 00BE                   .dbfile D:\excersize\output.c
 00BE                   .dbfunc e timer0_comp_isr _timer0_comp_isr fV
                        .even
 00BE           _timer0_comp_isr::
 00BE 8A93              st -y,R24
 00C0 9A93              st -y,R25
 00C2 8FB7              in R24,0x3f
 00C4 8A93              st -y,R24
 00C6                   .dbline -1
 00C6                   .dbline 95
 00C6           ; }
 00C6           ; //======================================================time0 中断
 00C6           ; #pragma interrupt_handler timer0_comp_isr:16
 00C6           ; void timer0_comp_isr(void){
 00C6                   .dbline 96
 00C6           ;    TCNT0 = 0x83;
 00C6 83E8              ldi R24,131
 00C8 82BF              out 0x32,R24
 00CA                   .dbline 97
 00CA           ;    T0Count0++;
 00CA 80917500          lds R24,_T0Count0
 00CE 90917600          lds R25,_T0Count0+1
 00D2 0196              adiw R24,1
 00D4 90937600          sts _T0Count0+1,R25
 00D8 80937500          sts _T0Count0,R24
 00DC                   .dbline -2
 00DC           L9:
 00DC 8991              ld R24,y+
 00DE 8FBF              out 0x3f,R24
 00E0 9991              ld R25,y+
 00E2 8991              ld R24,y+
 00E4                   .dbline 0 ; func end
 00E4 1895              reti
 00E6                   .dbend
 00E6                   .dbfunc e init_devices _init_devices fV
                        .even
 00E6           _init_devices::
 00E6                   .dbline -1
 00E6                   .dbline 109
 00E6           ; //   T0Count1++;
 00E6           ;   // T0Count2++;
 00E6           ;   // T0Count3++; 
 00E6           ;   // T0Count4++;
 00E6           ;  //compare occured TCNT0=OCR0
 00E6           ; }
 00E6           ; //======================================================速度中断处理函数
 00E6           ; 
 00E6           ; //======================================================CPU初始化
 00E6           ; //call this routine to initialise all peripherals
 00E6           ; void init_devices(void)
 00E6           ; {
 00E6                   .dbline 111
 00E6           ;  //stop errant interrupts until set up
 00E6           ;  CLI(); //disable all interrupts
 00E6 F894              cli
 00E8                   .dbline 112
 00E8           ;  XDIV  = 0x00; //xtal divider//系统时钟分频控制寄存器
 00E8 2224              clr R2
 00EA 2CBE              out 0x3c,R2
 00EC                   .dbline 113
 00EC           ;  XMCRA = 0x0E; //external memory//外部存储器控制寄存器
 00EC 8EE0              ldi R24,14
 00EE 80936D00          sts 109,R24
 00F2                   .dbline 114
 00F2           ;  XMCRB = 0x80;
 00F2 80E8              ldi R24,128
 00F4 80936C00          sts 108,R24
 00F8                   .dbline 115
 00F8           ;  mapping_init();
 00F8 83DF              xcall _mapping_init
 00FA                   .dbline 116
 00FA           ;  port_init();
 00FA 83DF              xcall _port_init
 00FC                   .dbline 119
 00FC           ;  //watchdog_init();
 00FC           ; // timer1_init();
 00FC           ;  timer0_init();
 00FC D6DF              xcall _timer0_init
 00FE                   .dbline 123
 00FE           ; 
 00FE           ;  //adc_init();
 00FE           ;  
 00FE           ;  MCUCR = 0xC0;//MCU控制寄存器
 00FE 80EC              ldi R24,192
 0100 85BF              out 0x35,R24
 0102                   .dbline 124
 0102           ;  EICRA = 0x0A; //extended ext ints//外部中断控制寄存器
 0102 8AE0              ldi R24,10
 0104 80936A00          sts 106,R24
 0108                   .dbline 125
 0108           ;  EICRB = 0x0F; //extended ext ints
 0108 8FE0              ldi R24,15
 010A 8ABF              out 0x3a,R24
 010C                   .dbline 126
 010C           ;  EIMSK = 0x33; //0x03 extended ext enable
 010C 83E3              ldi R24,51
 010E 89BF              out 0x39,R24
 0110                   .dbline 127
 0110           ;  TIMSK = 0x12; //timer interrupt sources  01:time0
 0110 82E1              ldi R24,18
 0112 87BF              out 0x37,R24
 0114                   .dbline 128
 0114           ;  ETIMSK = 0x00; //extended timer interrupt sources
 0114 2224              clr R2
 0116 20927D00          sts 125,R2
 011A                   .dbline 129
 011A           ;  uart0_init();
 011A 92DF              xcall _uart0_init
 011C                   .dbline 130
 011C           ;  SEI(); //re-enable interrupts
 011C 7894              sei
 011E                   .dbline -2
 011E           L10:
 011E                   .dbline 0 ; func end
 011E 0895              ret
 0120                   .dbend
 0120                   .dbfunc e WatchDog _WatchDog fV
                        .even
 0120           _WatchDog::
 0120                   .dbline -1
 0120                   .dbline 135
 0120           ;         // MyselfCan0Addr=1;
 0120           ;         // MyselfCan1Addr=2;
 0120           ; }
 0120           ; //======================================================看门狗处理函数
 0120           ; void WatchDog(void){
 0120                   .dbline 136
 0120           ;         DDRE|= 0x08;
 0120 139A              sbi 0x2,3
 0122                   .dbline 137
 0122           ;               PORTE&= 0xF7;
 0122 83B1              in R24,0x3
 0124 877F              andi R24,247
 0126 83B9              out 0x3,R24
 0128                   .dbline 138
 0128           ;               PORTE|= 0x08;
 0128 1B9A              sbi 0x3,3
 012A                   .dbline 139
 012A           ;               PORTE&= 0xF7;
 012A 83B1              in R24,0x3
 012C 877F              andi R24,247
 012E 83B9              out 0x3,R24
 0130                   .dbline 140
 0130           ;               PORTE|= 0x08;
 0130 1B9A              sbi 0x3,3
 0132                   .dbline 141
 0132           ;               PORTE&= 0xF7;
 0132 83B1              in R24,0x3
 0134 877F              andi R24,247
 0136 83B9              out 0x3,R24
 0138                   .dbline 142
 0138           ;               PORTE|= 0x08;
 0138 1B9A              sbi 0x3,3
 013A                   .dbline 143
 013A           ;               WDR();
 013A A895              wdr
 013C                   .dbline -2
 013C           L11:
 013C                   .dbline 0 ; func end
 013C 0895              ret
 013E                   .dbend
 013E                   .dbfunc e set_value _set_value fV
                        .even
 013E           _set_value::
 013E                   .dbline -1
 013E                   .dbline 149
 013E           ;      }
 013E           ; 
 013E           ; 
 013E           ; 
 013E           ; //===============================================初始设置
 013E           ; void set_value(void){
 013E                   .dbline 153
 013E           ;    
 013E           ; //   V_average_incept.Word=0;
 013E           ;   // Cr_average_incept.Word=0;
 013E           ;    OutputByte0Reg = 255;
 013E 8FEF              ldi R24,255
 0140 80930402          sts _OutputByte0Reg,R24
 0144                   .dbline 154
 0144           ;    OutputByte1Reg = 255;
 0144 80930302          sts _OutputByte1Reg,R24
 0148                   .dbline 155
 0148           ;    OutputByte2Reg = 255;
 0148 80930202          sts _OutputByte2Reg,R24
 014C                   .dbline -2
 014C           L12:
 014C                   .dbline 0 ; func end
 014C 0895              ret
 014E                   .dbend
 014E                   .dbfunc e tx0_int_to_bcd _tx0_int_to_bcd fV
 014E           ;           head -> R22
 014E           ;              j -> R10
 014E           ;              i -> R20,R21
                        .even
 014E           _tx0_int_to_bcd::
 014E 0E940000          xcall push_gset3
 0152 A801              movw R20,R16
 0154                   .dbline -1
 0154                   .dbline 162
 0154           ; }
 0154           ; 
 0154           ; 
 0154           ; //将int型变量转换为bcd码,并填充到TxBuffer0[]中
 0154           ; /********************************************************************************/
 0154           ; void tx0_int_to_bcd(int i)
 0154           ; {
 0154                   .dbline 163
 0154           ;    UC j,head=0;
 0154 6627              clr R22
 0156                   .dbline 164
 0156           ;    if(i<0){
 0156 4030              cpi R20,0
 0158 E0E0              ldi R30,0
 015A 5E07              cpc R21,R30
 015C 9CF4              brge L14
 015E                   .dbline 164
 015E                   .dbline 165
 015E           ;       i=-i;
 015E 4095              com R20
 0160 5095              com R21
 0162 4F5F              subi R20,0xFF
 0164 5F4F              sbci R21,0xFF
 0166                   .dbline 166
 0166           ;       TxBuffer0[TxOperateSp0++]='-';
 0166 20900001          lds R2,_TxOperateSp0
 016A 3324              clr R3
 016C 822D              mov R24,R2
 016E 8F5F              subi R24,255    ; addi 1
 0170 80930001          sts _TxOperateSp0,R24
 0174 80E0              ldi R24,<_TxBuffer0
 0176 90E0              ldi R25,>_TxBuffer0
 0178 E22D              mov R30,R2
 017A FF27              clr R31
 017C E80F              add R30,R24
 017E F91F              adc R31,R25
 0180 8DE2              ldi R24,45
 0182 8083              std z+0,R24
 0184                   .dbline 167
 0184           ;    }    
 0184           L14:
 0184                   .dbline 168
 0184           ;    j=i/10000;i%=10000;if(j){TxBuffer0[TxOperateSp0++]=j+0x30;head=1;}
 0184 20E1              ldi R18,10000
 0186 37E2              ldi R19,39
 0188 8A01              movw R16,R20
 018A 0E940000          xcall div16s
 018E A02E              mov R10,R16
 0190                   .dbline 168
 0190 20E1              ldi R18,10000
 0192 37E2              ldi R19,39
 0194 8A01              movw R16,R20
 0196 0E940000          xcall mod16s
 019A A801              movw R20,R16
 019C                   .dbline 168
 019C AA20              tst R10
 019E 89F0              breq L16
 01A0                   .dbline 168
 01A0                   .dbline 168
 01A0 20900001          lds R2,_TxOperateSp0
 01A4 3324              clr R3
 01A6 822D              mov R24,R2
 01A8 8F5F              subi R24,255    ; addi 1
 01AA 80930001          sts _TxOperateSp0,R24
 01AE 80E0              ldi R24,<_TxBuffer0
 01B0 90E0              ldi R25,>_TxBuffer0
 01B2 E22D              mov R30,R2
 01B4 FF27              clr R31
 01B6 E80F              add R30,R24
 01B8 F91F              adc R31,R25
 01BA 8A2D              mov R24,R10
 01BC 805D              subi R24,208    ; addi 48
 01BE 8083              std z+0,R24
 01C0                   .dbline 168
 01C0 61E0              ldi R22,1
 01C2                   .dbline 168
 01C2           L16:
 01C2                   .dbline 169
 01C2 28EE              ldi R18,1000
 01C4 33E0              ldi R19,3
 01C6 8A01              movw R16,R20
 01C8 0E940000          xcall div16s
 01CC A02E              mov R10,R16
 01CE                   .dbline 169
 01CE 28EE              ldi R18,1000
 01D0 33E0              ldi R19,3
 01D2 8A01              movw R16,R20
 01D4 0E940000          xcall mod16s
 01D8 A801              movw R20,R16
 01DA                   .dbline 169

⌨️ 快捷键说明

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