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

📄 fsdfds.lst

📁 Proteus与AVR应用实例,对初学者很有帮助。
💻 LST
📖 第 1 页 / 共 3 页
字号:
    01AA 939A      ST	R25,-Y
    01AB B62F      IN	R2,0x3F
    01AC 922A      ST	R2,-Y
(0016)   //TCCR0=0x05;  
(0017)   // TCCR0.7=0: 不强制输出比较 
(0018)   // TCCR0.3.TCCR0.6(WGM01,WGM00)=00 : T/C0普通工作模式(定时和计数) 
(0019)   // TCCR0.5, TCCR0.4=00: 正常的端口操作,OC0未连接 
(0020)   // TCCR0.2~TCCR0.0=010: Ft0=Ftos/256 
(0021)   // 因为TCNT0=6->250,所以,计时中断250*256/Ftos 
(0022) 
(0023) }
(0024) //-------------------------50HzPWM波产生函数---------------------------------//
(0025) //mega16
(0026) #pragma interrupt_handler timer0_ovf_isr:10  
(0027) //mega128
(0028) //#pragma interrupt_handler timer0_ovf_isr:17
(0029) void timer0_ovf_isr(void)
(0030) {
(0031)  static unsigned char tt; //tt用来保存当前时间在一秒中的比例位置
(0032)  TCNT0=57;
    01AD E389      LDI	R24,0x39
    01AE BF82      OUT	0x32,R24
(0033)  tt++;
    01AF 91800078  LDS	R24,tt
    01B1 5F8F      SUBI	R24,0xFF
    01B2 93800078  STS	tt,R24
(0034)  if(tt==99) 
    01B4 3683      CPI	R24,0x63
    01B5 F421      BNE	0x01BA
(0035)  {
(0036)   tt=0;
    01B6 2422      CLR	R2
    01B7 92200078  STS	tt,R2
(0037)   PORTD|=BIT(6);
    01B9 9A96      SBI	0x12,6
(0038)  }
(0039)  if(scale==tt) //按照当前占空比切换输出高电平
    01BA 90200078  LDS	R2,tt
    01BC 9030007C  LDS	R3,scale
    01BE 1432      CP	R3,R2
    01BF F409      BNE	0x01C1
(0040)  {
(0041)   PORTD&=~BIT(6);
    01C0 9896      CBI	0x12,6
(0042)  }
(0043)  if(tt==50) 
    01C1 91800078  LDS	R24,tt
    01C3 3382      CPI	R24,0x32
    01C4 F409      BNE	0x01C6
(0044)  {
(0045)   PORTD|=BIT(7);
    01C5 9A97      SBI	0x12,7
(0046)  }
(0047)  if(tt==50+scale) 
    01C6 9180007C  LDS	R24,scale
    01C8 5C8E      SUBI	R24,0xCE
    01C9 90200078  LDS	R2,tt
    01CB 1628      CP	R2,R24
    01CC F409      BNE	0x01CE
(0048)  {
(0049)   PORTD&=~BIT(7);
    01CD 9897      CBI	0x12,7
(0050)  }
    01CE 9029      LD	R2,Y+
    01CF BE2F      OUT	0x3F,R2
    01D0 9199      LD	R25,Y+
    01D1 9189      LD	R24,Y+
    01D2 9039      LD	R3,Y+
    01D3 9029      LD	R2,Y+
    01D4 9518      RETI
FILE: D:\我的文档\桌面\harvest\time1.h
(0001) #ifndef __time1_h
(0002) #define __time1_h
(0003) #include <iom16v.h>  
(0004) //#include <iom128v.h> 
(0005) #include <macros.h> 
(0006) //--------------------------27KHzPWM波传产生函数------------------------------//
(0007) void timer1_int(void)
(0008) {
(0009)  DDRD |= 0x30;         // PD5 PD4(OC0)输出  mega16
_timer1_int:
    01D5 B381      IN	R24,0x11
    01D6 6380      ORI	R24,0x30
    01D7 BB81      OUT	0x11,R24
(0010)  //DDRB |= 0x60;         // PB5 PB6(OC0)输出    mega128
(0011)  TCCR1B = 0x00; //stop 
    01D8 2422      CLR	R2
    01D9 BC2E      OUT	0x2E,R2
(0012)  OCR1A = 40;
    01DA E288      LDI	R24,0x28
    01DB E090      LDI	R25,0
    01DC BD9B      OUT	0x2B,R25
    01DD BD8A      OUT	0x2A,R24
(0013)  OCR1B = 294-40;
    01DE EF8E      LDI	R24,0xFE
    01DF BD99      OUT	0x29,R25
    01E0 BD88      OUT	0x28,R24
(0014)  ICR1  = 294;
    01E1 E286      LDI	R24,0x26
    01E2 E091      LDI	R25,1
    01E3 BD97      OUT	0x27,R25
    01E4 BD86      OUT	0x26,R24
(0015)  TCCR1A = 0xb2;
    01E5 EB82      LDI	R24,0xB2
    01E6 BD8F      OUT	0x2F,R24
(0016) // 7       6       5       4       3   2   1     0
(0017) // COM1A1  COM1A0  COM1B1  COM1B0  NC  NC  WGM11 WGM10 :TCCR1A
(0018) // 1       0       1       1       0   0   1     0
(0019)  TCCR1B = 0x19; //start Timer
    01E7 E189      LDI	R24,0x19
    01E8 BD8E      OUT	0x2E,R24
    01E9 9508      RET
(0020) // 7      6      5   4      3      2     1     0
(0021) // ICNC1  ICES1  NC  WGM13  WGM12  CS12  CS11  CS10    :TCCR1B
(0022) // 0      0      0   1      1      0     0     1     
(0023)  
(0024) }
(0025) //----------------------------------------------------------------------------//
(0026) //mega16
(0027) #pragma interrupt_handler timer1_compa_isr:7 
(0028) //mega128
(0029) //#pragma interrupt_handler timer1_compa_isr:13 
(0030) void timer1_compa_isr(void)  {} 
_timer1_compa_isr:
    01EA 9518      RETI
FILE: D:\我的文档\桌面\harvest\main.c
(0001) #include <iom16v.h>  
(0002) //#include <iom128v.h>  
(0003) #include <adc.h> 
(0004) #include <lcd.h> 
(0005) #include <time0.h> 
(0006) #include <time1.h> 
(0007) #include <delay.h> 
(0008) #include <macros.h> 
(0009) #include <parameter.h> 
(0010) //--------------------------------主函数--------------------------------------// 
(0011) void main(void)  
(0012) {  
(0013)  timer0_int();
_main:
    01EB DFB3      RCALL	_timer0_int
(0014)  timer1_int();
    01EC DFE8      RCALL	_timer1_int
(0015)  ADC_int();
    01ED DFAC      RCALL	_ADC_int
(0016)  LCD_init();//液晶初始化
    01EE DE92      RCALL	_LCD_init
(0017)  TIMSK = 0x11;       //  定时器/计数器1比较匹配A中断
    01EF E181      LDI	R24,0x11
    01F0 BF89      OUT	0x39,R24
(0018)  SEI();            // 使能全局中断 
    01F1 9478      BSET	7
(0019)  scale=30; //调节50Hz占空比
    01F2 E18E      LDI	R24,0x1E
    01F3 9380007C  STS	scale,R24
    01F5 C037      RJMP	0x022D
(0020)  while(1)  
(0021)  {
(0022)    //27KHz占空比设置
(0023)    OCR1A++;
    01F6 B58A      IN	R24,0x2A
    01F7 B59B      IN	R25,0x2B
    01F8 9601      ADIW	R24,1
    01F9 BD9B      OUT	0x2B,R25
    01FA BD8A      OUT	0x2A,R24
(0024)    if(OCR1A!=147)OCR1A++;
    01FB B58A      IN	R24,0x2A
    01FC B59B      IN	R25,0x2B
    01FD 3983      CPI	R24,0x93
    01FE E0E0      LDI	R30,0
    01FF 079E      CPC	R25,R30
    0200 F031      BEQ	0x0207
    0201 B58A      IN	R24,0x2A
    0202 B59B      IN	R25,0x2B
    0203 9601      ADIW	R24,1
    0204 BD9B      OUT	0x2B,R25
    0205 BD8A      OUT	0x2A,R24
    0206 C004      RJMP	0x020B
(0025)    else OCR1A=10;
    0207 E08A      LDI	R24,0xA
    0208 E090      LDI	R25,0
    0209 BD9B      OUT	0x2B,R25
    020A BD8A      OUT	0x2A,R24
(0026)    OCR1B=294-OCR1A;
    020B B42A      IN	R2,0x2A
    020C B43B      IN	R3,0x2B
    020D E286      LDI	R24,0x26
    020E E091      LDI	R25,1
    020F 1982      SUB	R24,R2
    0210 0993      SBC	R25,R3
    0211 BD99      OUT	0x29,R25
    0212 BD88      OUT	0x28,R24
(0027)    //50Hz占空比设置
(0028)    if(scale!=50)scale++;
    0213 9180007C  LDS	R24,scale
    0215 3382      CPI	R24,0x32
    0216 F021      BEQ	0x021B
    0217 5F8F      SUBI	R24,0xFF
    0218 9380007C  STS	scale,R24
    021A C003      RJMP	0x021E
(0029)    else scale=1;
    021B E081      LDI	R24,1
    021C 9380007C  STS	scale,R24
(0030)    //channel通道选择
(0031)    if(channel!=7)channel++;
    021E 91800079  LDS	R24,channel
    0220 3087      CPI	R24,7
    0221 F021      BEQ	0x0226
    0222 5F8F      SUBI	R24,0xFF
    0223 93800079  STS	channel,R24
    0225 C003      RJMP	0x0229
(0032)    else channel=0;
    0226 2422      CLR	R2
    0227 92200079  STS	channel,R2
(0033)    adcdisplay();
    0229 DF42      RCALL	_adcdisplay
(0034)    delay_nms(10);
FILE: <library>
    022A E00A      LDI	R16,0xA
    022B E010      LDI	R17,0
    022C DE45      RCALL	_delay_nms
    022D CFC8      RJMP	0x01F6
    022E 9508      RET
mod16u:
    022F 9468      BSET	6
    0230 C001      RJMP	xdiv16u
div16u:
    0231 94E8      BCLR	6
xdiv16u:
    0232 92EA      ST	R14,-Y
    0233 92FA      ST	R15,-Y
    0234 938A      ST	R24,-Y
    0235 24EE      CLR	R14
    0236 24FF      CLR	R15
    0237 E180      LDI	R24,0x10
    0238 0F00      LSL	R16
    0239 1F11      ROL	R17
    023A 1CEE      ROL	R14
    023B 1CFF      ROL	R15
    023C 16E2      CP	R14,R18
    023D 06F3      CPC	R15,R19
    023E F018      BCS	0x0242
    023F 1AE2      SUB	R14,R18
    0240 0AF3      SBC	R15,R19
    0241 9503      INC	R16
    0242 958A      DEC	R24
    0243 F7A1      BNE	0x0238
    0244 F416      BRTC	0x0247
    0245 2D0E      MOV	R16,R14
    0246 2D1F      MOV	R17,R15
    0247 9189      LD	R24,Y+
    0248 90F9      LD	R15,Y+
    0249 90E9      LD	R14,Y+
    024A 9508      RET
empy16s:
    024B 920A      ST	R0,-Y
    024C 921A      ST	R1,-Y
    024D 938A      ST	R24,-Y
    024E 939A      ST	R25,-Y
    024F 9F02      MUL	R16,R18
    0250 01C0      MOVW	R24,R0
    0251 9F12      MUL	R17,R18
    0252 0D90      ADD	R25,R0
    0253 9F03      MUL	R16,R19
    0254 0D90      ADD	R25,R0
    0255 018C      MOVW	R16,R24
    0256 9199      LD	R25,Y+
    0257 9189      LD	R24,Y+
    0258 9019      LD	R1,Y+
    0259 9009      LD	R0,Y+
    025A 9508      RET
pop_gset2:
    025B E0E2      LDI	R30,2
    025C 940C026D  JMP	pop
pop_gset3:
    025E E0E4      LDI	R30,4
    025F 940C026D  JMP	pop
push_gset5:
    0261 92FA      ST	R15,-Y
    0262 92EA      ST	R14,-Y
push_gset4:
    0263 92DA      ST	R13,-Y
    0264 92CA      ST	R12,-Y
push_gset3:
    0265 92BA      ST	R11,-Y
    0266 92AA      ST	R10,-Y
push_gset2:
    0267 937A      ST	R23,-Y
    0268 936A      ST	R22,-Y
push_gset1:
    0269 935A      ST	R21,-Y
    026A 934A      ST	R20,-Y
    026B 9508      RET
pop_gset1:
    026C E0E1      LDI	R30,1
pop:
    026D 9149      LD	R20,Y+
    026E 9159      LD	R21,Y+
    026F FDE0      SBRC	R30,0
    0270 9508      RET
    0271 9169      LD	R22,Y+
    0272 9179      LD	R23,Y+
    0273 FDE1      SBRC	R30,1
    0274 9508      RET
    0275 90A9      LD	R10,Y+
    0276 90B9      LD	R11,Y+
    0277 FDE2      SBRC	R30,2
    0278 9508      RET
    0279 90C9      LD	R12,Y+
    027A 90D9      LD	R13,Y+
    027B FDE3      SBRC	R30,3
    027C 9508      RET
    027D 90E9      LD	R14,Y+
    027E 90F9      LD	R15,Y+
    027F 9508      RET

⌨️ 快捷键说明

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