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

📄 mycontrol.lst

📁 Atmega8
💻 LST
📖 第 1 页 / 共 2 页
字号:
__text_start:
__start:
    0014 E5CF      LDI	R28,0x5F
    0015 E0D4      LDI	R29,4
    0016 BFCD      OUT	0x3D,R28
    0017 BFDE      OUT	0x3E,R29
    0018 51C0      SUBI	R28,0x10
    0019 40D0      SBCI	R29,0
    001A EA0A      LDI	R16,0xAA
    001B 8308      STD	Y+0,R16
    001C 2400      CLR	R0
    001D E6E0      LDI	R30,0x60
    001E E0F0      LDI	R31,0
    001F E010      LDI	R17,0
    0020 37E1      CPI	R30,0x71
    0021 07F1      CPC	R31,R17
    0022 F011      BEQ	0x0025
    0023 9201      ST	R0,Z+
    0024 CFFB      RJMP	0x0020
    0025 8300      STD	Z+0,R16
    0026 E2E8      LDI	R30,0x28
    0027 E0F0      LDI	R31,0
    0028 E6A0      LDI	R26,0x60
    0029 E0B0      LDI	R27,0
    002A E010      LDI	R17,0
    002B 32E8      CPI	R30,0x28
    002C 07F1      CPC	R31,R17
    002D F021      BEQ	0x0032
    002E 95C8      LPM
    002F 9631      ADIW	R30,1
    0030 920D      ST	R0,X+
    0031 CFF9      RJMP	0x002B
    0032 D0FC      RCALL	_main
_exit:
    0033 CFFF      RJMP	_exit
FILE: C:\DOCUME~1\hb\MYDOCU~1\喷吗机--2代\单片机程序\定时器(方波输出,TC1控制)\Control.c
(0001) //ICC-AVR application builder : 2006-12-10 17:22:46
(0002) // Target : M8
(0003) // Crystal: 8.0000Mhz
(0004) //ICC-AVR application builder : 2006-12-10 21:46:41
(0005) // Target : M8
(0006) // Crystal: 8.0000Mhz
(0007) 
(0008) #include <iom8v.h>
(0009) #include <macros.h>
(0010) long Ddummy,Counter_MotorSpeedPulse,Counter_IRPulse,Settings_IRTopValue;
(0011) char Settings_PrintQuality;
(0012) const FTC2 =64;
(0013) 
(0014) void port_init(void)
(0015) {
(0016)  PORTB = 0x00;
_port_init:
    0034 2422      CLR	R2
    0035 BA28      OUT	0x18,R2
(0017)  DDRB  = 0xFF;
    0036 EF8F      LDI	R24,0xFF
    0037 BB87      OUT	0x17,R24
(0018)  PORTC = 0x7F; //m103 output only
    0038 E78F      LDI	R24,0x7F
    0039 BB85      OUT	0x15,R24
(0019)  DDRC  = 0x00;
    003A BA24      OUT	0x14,R2
(0020)  PORTD = 0xFF;
    003B EF8F      LDI	R24,0xFF
    003C BB82      OUT	0x12,R24
(0021)  DDRD  = 0x00;
    003D BA21      OUT	0x11,R2
(0022) }
    003E 9508      RET
(0023) 
(0024) //TIMER1 initialisation - prescale:1
(0025) // WGM: 4) CTC, TOP=OCRnA
(0026) // desired value: 1KHz
(0027) // actual value:  1.000KHz (0.0%)
(0028) void timer1_init(void)
(0029) {
(0030)  TCCR1B = 0x00; //stop
_timer1_init:
    003F 2422      CLR	R2
    0040 BC2E      OUT	0x2E,R2
(0031)  TCNT1  = 0x00; //setup
    0041 2433      CLR	R3
    0042 BC3D      OUT	0x2D,R3
    0043 BC2C      OUT	0x2C,R2
(0032)  ICR1H  = 0x1F;
    0044 E18F      LDI	R24,0x1F
    0045 BD87      OUT	0x27,R24
(0033)  ICR1L  = 0x3F;
    0046 E38F      LDI	R24,0x3F
    0047 BD86      OUT	0x26,R24
(0034)  OCR1A = FTC2*Settings_PrintQuality;    //每组Settings_PrintQuality个墨滴选一个充电
    0048 91200060  LDS	R18,_Settings_PrintQuality
    004A 2733      CLR	R19
    004B E2E6      LDI	R30,0x26
    004C E0F0      LDI	R31,0
    004D 9105      LPM	R16,Z+
    004E 9114      LPM	R17,0(Z)
    004F D140      RCALL	empy16s
    0050 BD1B      OUT	0x2B,R17
    0051 BD0A      OUT	0x2A,R16
(0035)  OCR1B = FTC2/2;                        //充电脉宽是墨滴周期时间的一半,充电相位为0,充电好坏由断点调整
    0052 E022      LDI	R18,2
    0053 E030      LDI	R19,0
    0054 E2E6      LDI	R30,0x26
    0055 E0F0      LDI	R31,0
    0056 9105      LPM	R16,Z+
    0057 9114      LPM	R17,0(Z)
    0058 D102      RCALL	div16s
    0059 BD19      OUT	0x29,R17
    005A BD08      OUT	0x28,R16
(0036)  TCCR1A = 0x50;
    005B E580      LDI	R24,0x50
    005C BD8F      OUT	0x2F,R24
(0037)  TCCR1B = 0x09; //start Timer
    005D E089      LDI	R24,0x9
    005E BD8E      OUT	0x2E,R24
(0038) }
    005F 9508      RET
(0039) //
(0040) #pragma interrupt_handler timer1_compa_isr:7   
(0041) void timer1_compa_isr(void)   //开始一个新的充电墨滴时PB1开始产生一个下降沿或上升沿
(0042) {   //compare occured TCNT1=OCR1A
(0043)     //if(PINB1==0){   //如果PB1是低电平,就开始一个新的DA转换
(0044) 	//   ;
(0045) 	//}
(0046) }
_timer1_compa_isr:
    0060 9518      RETI
(0047) 
(0048) #pragma interrupt_handler timer1_compb_isr:8
(0049) void timer1_compb_isr(void)   //停止充电时刻,PB2开始产生上升沿或下降沿
(0050) {
(0051)  //compare occured TCNT1=OCR1B
(0052) }
_timer1_compb_isr:
    0061 9518      RETI
(0053) //
(0054) 
(0055) //TIMER2 initialisation - prescale:1
(0056) // WGM: Normal
(0057) // desired value: 62.5KHz
(0058) // actual value: 62.5KHz (0.0%)
(0059) void timer2_init(void)
(0060) {
(0061)  TCCR2 = 0x00; //stop
_timer2_init:
    0062 2422      CLR	R2
    0063 BC25      OUT	0x25,R2
(0062)  ASSR  = 0x00; //set async mode
    0064 BC22      OUT	0x22,R2
(0063)  TCNT2 = 0x00; //setup
    0065 BC24      OUT	0x24,R2
(0064)  OCR2  = FTC2; //0x40;振荡频率的分频值,8M-64,4M-32 
    0066 E2E6      LDI	R30,0x26
    0067 E0F0      LDI	R31,0
    0068 9005      LPM	R0,Z+
    0069 9014      LPM	R1,0(Z)
    006A 01F0      MOVW	R30,R0
    006B BDE3      OUT	0x23,R30
(0065)  TCCR2 = 0x19; //CTC 模式
    006C E189      LDI	R24,0x19
    006D BD85      OUT	0x25,R24
(0066) }
    006E 9508      RET
_int0_isr:
    006F 922A      ST	R2,-Y
    0070 923A      ST	R3,-Y
    0071 924A      ST	R4,-Y
    0072 925A      ST	R5,-Y
    0073 938A      ST	R24,-Y
    0074 939A      ST	R25,-Y
    0075 93AA      ST	R26,-Y
    0076 93BA      ST	R27,-Y
    0077 93EA      ST	R30,-Y
    0078 B62F      IN	R2,0x3F
    0079 922A      ST	R2,-Y
    007A D13E      RCALL	push_gset2
(0067) 
(0068) #pragma interrupt_handler int0_isr:2
(0069) void int0_isr(void)  //external interupt on INT0  记录电机速度
(0070) {
(0071)      Counter_MotorSpeedPulse++;
    007B E041      LDI	R20,1
    007C E050      LDI	R21,0
    007D E060      LDI	R22,0
    007E E070      LDI	R23,0
    007F 9040006B  LDS	R4,_Counter_MotorSpeedPulse+2
    0081 9050006C  LDS	R5,_Counter_MotorSpeedPulse+3
    0083 90200069  LDS	R2,_Counter_MotorSpeedPulse
    0085 9030006A  LDS	R3,_Counter_MotorSpeedPulse+1
    0087 0E24      ADD	R2,R20
    0088 1E35      ADC	R3,R21
    0089 1E46      ADC	R4,R22
    008A 1E57      ADC	R5,R23
    008B 9230006A  STS	_Counter_MotorSpeedPulse+1,R3
    008D 92200069  STS	_Counter_MotorSpeedPulse,R2
    008F 9250006C  STS	_Counter_MotorSpeedPulse+3,R5
    0091 9240006B  STS	_Counter_MotorSpeedPulse+2,R4
(0072) 	 if(Counter_MotorSpeedPulse>=1000){ //计算并显示电机速度
    0093 EE48      LDI	R20,0xE8
    0094 E053      LDI	R21,3
    0095 E060      LDI	R22,0
    0096 E070      LDI	R23,0
    0097 1624      CP	R2,R20
    0098 0635      CPC	R3,R21
    0099 0646      CPC	R4,R22
    009A 0657      CPC	R5,R23
    009B F06C      BLT	0x00A9
(0073) 	    Counter_MotorSpeedPulse =0;
    009C E040      LDI	R20,0
    009D E050      LDI	R21,0
    009E E060      LDI	R22,0
    009F E070      LDI	R23,0
    00A0 9350006A  STS	_Counter_MotorSpeedPulse+1,R21
    00A2 93400069  STS	_Counter_MotorSpeedPulse,R20
    00A4 9370006C  STS	_Counter_MotorSpeedPulse+3,R23
    00A6 9360006B  STS	_Counter_MotorSpeedPulse+2,R22
(0074) 	    PORTB |=32; //PB5脚置高电平
    00A8 9AC5      SBI	0x18,5
(0075) 	 }
(0076) 	 if(Counter_MotorSpeedPulse==500) PORTB &=223; //PB5脚置低电平
    00A9 EF44      LDI	R20,0xF4
    00AA E051      LDI	R21,1
    00AB E060      LDI	R22,0
    00AC E070      LDI	R23,0
    00AD 9040006B  LDS	R4,_Counter_MotorSpeedPulse+2
    00AF 9050006C  LDS	R5,_Counter_MotorSpeedPulse+3
    00B1 90200069  LDS	R2,_Counter_MotorSpeedPulse
    00B3 9030006A  LDS	R3,_Counter_MotorSpeedPulse+1
    00B5 1624      CP	R2,R20
    00B6 0635      CPC	R3,R21
    00B7 0646      CPC	R4,R22
    00B8 0657      CPC	R5,R23
    00B9 F419      BNE	0x00BD
    00BA B388      IN	R24,0x18
    00BB 7D8F      ANDI	R24,0xDF
    00BC BB88      OUT	0x18,R24
(0077) }
    00BD D0E2      RCALL	pop_gset2
    00BE 9029      LD	R2,Y+
    00BF BE2F      OUT	0x3F,R2
    00C0 91E9      LD	R30,Y+
    00C1 91B9      LD	R27,Y+
    00C2 91A9      LD	R26,Y+
    00C3 9199      LD	R25,Y+
    00C4 9189      LD	R24,Y+
    00C5 9059      LD	R5,Y+
    00C6 9049      LD	R4,Y+
    00C7 9039      LD	R3,Y+
    00C8 9029      LD	R2,Y+
    00C9 9518      RETI
_int1_isr:
    00CA 920A      ST	R0,-Y
    00CB 921A      ST	R1,-Y
    00CC 922A      ST	R2,-Y
    00CD 923A      ST	R3,-Y
    00CE 924A      ST	R4,-Y
    00CF 925A      ST	R5,-Y

⌨️ 快捷键说明

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