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

📄 wave50%.lis

📁 利用ATmega16单片机的T2定时器产生方波的控制程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module Wave50%.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\hb\MYDOCU~1\喷吗机--2代\单片机程序\定时器(方波输出,TC0控制)\Wave50%.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 11
 0000           ; //ICC-AVR application builder : 2006-12-10 11:12:46
 0000           ; // Target : M8
 0000           ; // Crystal: 4.0000Mhz
 0000           ; 
 0000           ; #include <iom8v.h>
 0000           ; #include <macros.h>
 0000           ; long Ddummy;
 0000           ; char Settings_PerDotGroupNum,Settings_PrintPhase;
 0000           ; 
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 12
 0000           ;  PORTB = 0x00;
 0000 2224              clr R2
 0002 28BA              out 0x18,R2
 0004                   .dbline 13
 0004           ;  DDRB  = 0xFF;
 0004 8FEF              ldi R24,255
 0006 87BB              out 0x17,R24
 0008                   .dbline 14
 0008           ;  PORTC = 0x7F; //m103 output only
 0008 8FE7              ldi R24,127
 000A 85BB              out 0x15,R24
 000C                   .dbline 15
 000C           ;  DDRC  = 0x00;
 000C 24BA              out 0x14,R2
 000E                   .dbline 16
 000E           ;  PORTD = 0xFF;
 000E 8FEF              ldi R24,255
 0010 82BB              out 0x12,R24
 0012                   .dbline 17
 0012           ;  DDRD  = 0x00;
 0012 21BA              out 0x11,R2
 0014                   .dbline -2
 0014                   .dbline 18
 0014           ; }
 0014           L1:
 0014                   .dbline 0 ; func end
 0014 0895              ret
 0016                   .dbend
 0016                   .dbfunc e timer0_init _timer0_init fV
                        .even
 0016           _timer0_init::
 0016                   .dbline -1
 0016                   .dbline 25
 0016           ; 
 0016           ; //TIMER0 initialisation - prescale:1
 0016           ; // WGM: Normal
 0016           ; // desired value: 125KHz
 0016           ; // actual value: 125.000KHz (0.0%)
 0016           ; void timer0_init(void)
 0016           ; {
 0016                   .dbline 26
 0016           ;  TCCR0 = 0x00; //stop
 0016 2224              clr R2
 0018 23BE              out 0x33,R2
 001A                   .dbline 27
 001A           ;  TCNT0 = 0xE0; //set count
 001A 80EE              ldi R24,224
 001C 82BF              out 0x32,R24
 001E                   .dbline 28
 001E           ;  TCCR0 = 0x01; //start timer
 001E 81E0              ldi R24,1
 0020 83BF              out 0x33,R24
 0022                   .dbline -2
 0022                   .dbline 29
 0022           ; }
 0022           L2:
 0022                   .dbline 0 ; func end
 0022 0895              ret
 0024                   .dbend
                        .area vector(rom, abs)
                        .org 18
 0012 12C0              rjmp _timer0_ovf_isr
                        .area text(rom, con, rel)
 0024                   .dbfile C:\DOCUME~1\hb\MYDOCU~1\喷吗机--2代\单片机程序\定时器(方波输出,TC0控制)\Wave50%.c
 0024                   .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
                        .even
 0024           _timer0_ovf_isr::
 0024 2A92              st -y,R2
 0026 3A92              st -y,R3
 0028 4A92              st -y,R4
 002A 5A92              st -y,R5
 002C 6A92              st -y,R6
 002E 7A92              st -y,R7
 0030 8A92              st -y,R8
 0032 9A92              st -y,R9
 0034 0A93              st -y,R16
 0036 1A93              st -y,R17
 0038 2A93              st -y,R18
 003A 3A93              st -y,R19
 003C 8A93              st -y,R24
 003E 9A93              st -y,R25
 0040 AA93              st -y,R26
 0042 BA93              st -y,R27
 0044 EA93              st -y,R30
 0046 2FB6              in R2,0x3f
 0048 2A92              st -y,R2
 004A 00D0              rcall push_gset2
 004C                   .dbline -1
 004C                   .dbline 33
 004C           ; 
 004C           ; #pragma interrupt_handler timer0_ovf_isr:10
 004C           ; void timer0_ovf_isr(void)
 004C           ; {
 004C                   .dbline 34
 004C           ;     Ddummy++;
 004C 41E0              ldi R20,1
 004E 50E0              ldi R21,0
 0050 60E0              ldi R22,0
 0052 70E0              ldi R23,0
 0054 40900400          lds R4,_Ddummy+2
 0058 50900500          lds R5,_Ddummy+2+1
 005C 20900200          lds R2,_Ddummy
 0060 30900300          lds R3,_Ddummy+1
 0064 240E              add R2,R20
 0066 351E              adc R3,R21
 0068 461E              adc R4,R22
 006A 571E              adc R5,R23
 006C 30920300          sts _Ddummy+1,R3
 0070 20920200          sts _Ddummy,R2
 0074 50920500          sts _Ddummy+2+1,R5
 0078 40920400          sts _Ddummy+2,R4
 007C                   .dbline 35
 007C           ;     if(2*(Ddummy/2)==Ddummy){PORTB &=0xFD;} //PB1脚置低电平
 007C 42E0              ldi R20,2
 007E 50E0              ldi R21,0
 0080 60E0              ldi R22,0
 0082 70E0              ldi R23,0
 0084 7A93              st -y,R23
 0086 6A93              st -y,R22
 0088 5A93              st -y,R21
 008A 4A93              st -y,R20
 008C 8101              movw R16,R2
 008E 9201              movw R18,R4
 0090 00D0              rcall div32s
 0092 42E0              ldi R20,2
 0094 50E0              ldi R21,0
 0096 60E0              ldi R22,0
 0098 70E0              ldi R23,0
 009A 3A93              st -y,R19
 009C 2A93              st -y,R18
 009E 1A93              st -y,R17
 00A0 0A93              st -y,R16
 00A2 8A01              movw R16,R20
 00A4 9B01              movw R18,R22
 00A6 00D0              rcall empy32s
 00A8 40900400          lds R4,_Ddummy+2
 00AC 50900500          lds R5,_Ddummy+2+1
 00B0 20900200          lds R2,_Ddummy
 00B4 30900300          lds R3,_Ddummy+1
 00B8 0215              cp R16,R2
 00BA 1305              cpc R17,R3
 00BC 2405              cpc R18,R4
 00BE 3505              cpc R19,R5
 00C0 21F4              brne L4
 00C2                   .dbline 35
 00C2                   .dbline 35
 00C2 88B3              in R24,0x18
 00C4 8D7F              andi R24,253
 00C6 88BB              out 0x18,R24
 00C8                   .dbline 35
 00C8 01C0              rjmp L5
 00CA           L4:
 00CA                   .dbline 36
 00CA           ;       else{PORTB |=0X02;} //PB1脚置高电平
 00CA                   .dbline 36
 00CA C19A              sbi 0x18,1
 00CC                   .dbline 36
 00CC           L5:
 00CC                   .dbline 38
 00CC           ;       
 00CC           ;     if(Ddummy==1) PORTB &=0xFE;    //PB0脚置低电平
 00CC 41E0              ldi R20,1
 00CE 50E0              ldi R21,0
 00D0 60E0              ldi R22,0
 00D2 70E0              ldi R23,0
 00D4 40900400          lds R4,_Ddummy+2
 00D8 50900500          lds R5,_Ddummy+2+1
 00DC 20900200          lds R2,_Ddummy
 00E0 30900300          lds R3,_Ddummy+1
 00E4 2416              cp R2,R20
 00E6 3506              cpc R3,R21
 00E8 4606              cpc R4,R22
 00EA 5706              cpc R5,R23
 00EC 19F4              brne L6
 00EE                   .dbline 38
 00EE 88B3              in R24,0x18
 00F0 8E7F              andi R24,254
 00F2 88BB              out 0x18,R24
 00F4           L6:
 00F4                   .dbline 39
 00F4           ;       if(Ddummy >=Settings_PerDotGroupNum){
 00F4 20900100          lds R2,_Settings_PerDotGroupNum
 00F8 3324              clr R3
 00FA 4424              clr R4
 00FC 5524              clr R5

⌨️ 快捷键说明

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