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

📄 wave50%.lis

📁 利用ATmega16单片机的T2定时器产生方波的控制程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00FE 80900400          lds R8,_Ddummy+2
 0102 90900500          lds R9,_Ddummy+2+1
 0106 60900200          lds R6,_Ddummy
 010A 70900300          lds R7,_Ddummy+1
 010E 6214              cp R6,R2
 0110 7304              cpc R7,R3
 0112 8404              cpc R8,R4
 0114 9504              cpc R9,R5
 0116 6CF0              brlt L8
 0118                   .dbline 39
 0118                   .dbline 40
 0118           ;          Ddummy =0; //恢复计数初值
 0118 40E0              ldi R20,0
 011A 50E0              ldi R21,0
 011C 60E0              ldi R22,0
 011E 70E0              ldi R23,0
 0120 50930300          sts _Ddummy+1,R21
 0124 40930200          sts _Ddummy,R20
 0128 70930500          sts _Ddummy+2+1,R23
 012C 60930400          sts _Ddummy+2,R22
 0130                   .dbline 41
 0130           ;        PORTB |=0X01;   //PB0脚置高电平
 0130 C09A              sbi 0x18,0
 0132                   .dbline 42
 0132           ;       }  
 0132           L8:
 0132                   .dbline 43
 0132           ;     TCNT0 = 0xF0; //reload counter value
 0132 80EF              ldi R24,240
 0134 82BF              out 0x32,R24
 0136                   .dbline -2
 0136                   .dbline 44
 0136           ; }
 0136           L3:
 0136 00D0              rcall pop_gset2
 0138 2990              ld R2,y+
 013A 2FBE              out 0x3f,R2
 013C E991              ld R30,y+
 013E B991              ld R27,y+
 0140 A991              ld R26,y+
 0142 9991              ld R25,y+
 0144 8991              ld R24,y+
 0146 3991              ld R19,y+
 0148 2991              ld R18,y+
 014A 1991              ld R17,y+
 014C 0991              ld R16,y+
 014E 9990              ld R9,y+
 0150 8990              ld R8,y+
 0152 7990              ld R7,y+
 0154 6990              ld R6,y+
 0156 5990              ld R5,y+
 0158 4990              ld R4,y+
 015A 3990              ld R3,y+
 015C 2990              ld R2,y+
 015E                   .dbline 0 ; func end
 015E 1895              reti
 0160                   .dbend
 0160                   .dbfunc e adc_init _adc_init fV
                        .even
 0160           _adc_init::
 0160                   .dbline -1
 0160                   .dbline 49
 0160           ; 
 0160           ; //ADC initialisation
 0160           ; // Conversion time: 6uS
 0160           ; void adc_init(void)
 0160           ; {
 0160                   .dbline 50
 0160           ;  ADCSR = 0x00; //disable adc
 0160 2224              clr R2
 0162 26B8              out 0x6,R2
 0164                   .dbline 51
 0164           ;  ADMUX = 0x00; //select adc input 0
 0164 27B8              out 0x7,R2
 0166                   .dbline 52
 0166           ;  ACSR  = 0x00;
 0166 28B8              out 0x8,R2
 0168                   .dbline 53
 0168           ;  ADCSR = 0xA9;
 0168 89EA              ldi R24,169
 016A 86B9              out 0x6,R24
 016C                   .dbline -2
 016C                   .dbline 54
 016C           ; }
 016C           L10:
 016C                   .dbline 0 ; func end
 016C 0895              ret
 016E                   .dbend
                        .area vector(rom, abs)
                        .org 28
 001C B7C0              rjmp _adc_isr
                        .area text(rom, con, rel)
 016E                   .dbfile C:\DOCUME~1\hb\MYDOCU~1\喷吗机--2代\单片机程序\定时器(方波输出,TC0控制)\Wave50%.c
 016E                   .dbfunc e adc_isr _adc_isr fV
                        .even
 016E           _adc_isr::
 016E                   .dbline -1
 016E                   .dbline 58
 016E           ; 
 016E           ; #pragma interrupt_handler adc_isr:15
 016E           ; void adc_isr(void)
 016E           ; {
 016E                   .dbline -2
 016E                   .dbline 62
 016E           ;  //conversion complete, read value (int) using...
 016E           ;  // value=ADCL;            //Read 8 low bits first (important)
 016E           ;  // value|=(int)ADCH << 8; //read 2 high bits and shift into top byte
 016E           ; }
 016E           L11:
 016E                   .dbline 0 ; func end
 016E 1895              reti
 0170                   .dbend
 0170                   .dbfunc e init_devices _init_devices fV
                        .even
 0170           _init_devices::
 0170                   .dbline -1
 0170                   .dbline 66
 0170           ; 
 0170           ; //call this routine to initialise all peripherals
 0170           ; void init_devices(void)
 0170           ; {
 0170                   .dbline 68
 0170           ;  //stop errant interrupts until set up
 0170           ;  CLI(); //disable all interrupts
 0170 F894              cli
 0172                   .dbline 69
 0172           ;  port_init();
 0172 46DF              rcall _port_init
 0174                   .dbline 70
 0174           ;  timer0_init();
 0174 50DF              rcall _timer0_init
 0176                   .dbline 71
 0176           ;  adc_init();
 0176 F4DF              rcall _adc_init
 0178                   .dbline 73
 0178           ; 
 0178           ;  MCUCR = 0x00;
 0178 2224              clr R2
 017A 25BE              out 0x35,R2
 017C                   .dbline 74
 017C           ;  GICR  = 0x00;
 017C 2BBE              out 0x3b,R2
 017E                   .dbline 75
 017E           ;  TIMSK = 0x01; //timer interrupt sources
 017E 81E0              ldi R24,1
 0180 89BF              out 0x39,R24
 0182                   .dbline 76
 0182           ;  SEI(); //re-enable interrupts
 0182 7894              sei
 0184                   .dbline -2
 0184                   .dbline 78
 0184           ;  //all peripherals are now initialised
 0184           ; }
 0184           L12:
 0184                   .dbline 0 ; func end
 0184 0895              ret
 0186                   .dbend
 0186                   .dbfunc e main _main fV
                        .even
 0186           _main::
 0186                   .dbline -1
 0186                   .dbline 81
 0186           ; 
 0186           ; void main()
 0186           ; {
 0186                   .dbline 82
 0186           ;      init_devices(); 
 0186 F4DF              rcall _init_devices
 0188                   .dbline 83
 0188           ;        Ddummy = 0;                     //临时变量,赋初值
 0188 40E0              ldi R20,0
 018A 50E0              ldi R21,0
 018C 60E0              ldi R22,0
 018E 70E0              ldi R23,0
 0190 50930300          sts _Ddummy+1,R21
 0194 40930200          sts _Ddummy,R20
 0198 70930500          sts _Ddummy+2+1,R23
 019C 60930400          sts _Ddummy+2,R22
 01A0                   .dbline 84
 01A0           ;        Settings_PerDotGroupNum =10;    //每10个墨滴选一个进行打印
 01A0 8AE0              ldi R24,10
 01A2 80930100          sts _Settings_PerDotGroupNum,R24
 01A6                   .dbline 85
 01A6           ;        Settings_PrintPhase =10;        
 01A6 80930000          sts _Settings_PrintPhase,R24
 01AA                   .dbline -2
 01AA                   .dbline 86
 01AA           ; } 
 01AA           L13:
 01AA                   .dbline 0 ; func end
 01AA 0895              ret
 01AC                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\hb\MYDOCU~1\喷吗机--2代\单片机程序\定时器(方波输出,TC0控制)\Wave50%.c
 0000           _Settings_PrintPhase::
 0000                   .blkb 1
 0001                   .dbsym e Settings_PrintPhase _Settings_PrintPhase c
 0001           _Settings_PerDotGroupNum::
 0001                   .blkb 1
 0002                   .dbsym e Settings_PerDotGroupNum _Settings_PerDotGroupNum c
 0002           _Ddummy::
 0002                   .blkb 4
 0006                   .dbsym e Ddummy _Ddummy L

⌨️ 快捷键说明

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