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

📄 m128.lst

📁 ewts avr驱动程序 角速度传感器 104为秒
💻 LST
📖 第 1 页 / 共 4 页
字号:
    051C 019B      MOVW	R18,R22
    051D 018B      MOVW	R16,R22
    051E 940E071A  CALL	empy16s
    0520 0178      MOVW	R14,R16
    0521 C005      RJMP	0x0527
(0364) 		while ((yt*yt)>(rr-xx))
(0365) 		      yt--;
    0522 8188      LDD	R24,Y+0
    0523 8199      LDD	R25,Y+1
    0524 9701      SBIW	R24,1
    0525 8399      STD	Y+1,R25
    0526 8388      STD	Y+0,R24
    0527 802A      LDD	R2,Y+2
    0528 803B      LDD	R3,Y+3
    0529 182E      SUB	R2,R14
    052A 083F      SBC	R3,R15
    052B 8128      LDD	R18,Y+0
    052C 8139      LDD	R19,Y+1
    052D 0189      MOVW	R16,R18
    052E 940E071A  CALL	empy16s
    0530 1620      CP	R2,R16
    0531 0631      CPC	R3,R17
    0532 F378      BCS	0x0522
(0366) 		x=x0+xt;		//第一象限
    0533 84AE      LDD	R10,Y+14
    0534 24BB      CLR	R11
    0535 0EA6      ADD	R10,R22
    0536 1EB7      ADC	R11,R23
(0367) 		y=y0-yt;
    0537 88C8      LDD	R12,Y+16
    0538 24DD      CLR	R13
    0539 8008      LDD	R0,Y+0
    053A 8019      LDD	R1,Y+1
    053B 18C0      SUB	R12,R0
    053C 08D1      SBC	R13,R1
(0368) 		pset(x,y);
    053D 2D2C      MOV	R18,R12
    053E 2D0A      MOV	R16,R10
    053F DF27      RCALL	_pset
(0369) 		x=x0-xt;		//第二象限
    0540 84AE      LDD	R10,Y+14
    0541 24BB      CLR	R11
    0542 1AA6      SUB	R10,R22
    0543 0AB7      SBC	R11,R23
(0370) 		pset(x,y);
    0544 2D2C      MOV	R18,R12
    0545 2D0A      MOV	R16,R10
    0546 DF20      RCALL	_pset
(0371) 		y=y0+yt;		//第三象限
    0547 88C8      LDD	R12,Y+16
    0548 24DD      CLR	R13
    0549 8008      LDD	R0,Y+0
    054A 8019      LDD	R1,Y+1
    054B 0CC0      ADD	R12,R0
    054C 1CD1      ADC	R13,R1
(0372) 		pset(x,y);
    054D 2D2C      MOV	R18,R12
    054E 2D0A      MOV	R16,R10
    054F DF17      RCALL	_pset
(0373) 		x=x0+xt;		//第四象限
    0550 84AE      LDD	R10,Y+14
    0551 24BB      CLR	R11
    0552 0EA6      ADD	R10,R22
    0553 1EB7      ADC	R11,R23
(0374) 		pset(x,y);
    0554 2D2C      MOV	R18,R12
    0555 2D0A      MOV	R16,R10
    0556 DF10      RCALL	_pset
(0375) /******45度镜象画另外8分之一圆弧******/
(0376) 		x=x0+yt;		//第一象限
    0557 84AE      LDD	R10,Y+14
    0558 24BB      CLR	R11
    0559 8008      LDD	R0,Y+0
    055A 8019      LDD	R1,Y+1
    055B 0CA0      ADD	R10,R0
    055C 1CB1      ADC	R11,R1
(0377) 		y=y0-xt;
    055D 88C8      LDD	R12,Y+16
    055E 24DD      CLR	R13
    055F 1AC6      SUB	R12,R22
    0560 0AD7      SBC	R13,R23
(0378) 		pset(x,y);
    0561 2D2C      MOV	R18,R12
    0562 2D0A      MOV	R16,R10
    0563 DF03      RCALL	_pset
(0379) 		x=x0-yt;		//第二象限
    0564 84AE      LDD	R10,Y+14
    0565 24BB      CLR	R11
    0566 8008      LDD	R0,Y+0
    0567 8019      LDD	R1,Y+1
    0568 18A0      SUB	R10,R0
    0569 08B1      SBC	R11,R1
(0380) 		pset(x,y);
    056A 2D2C      MOV	R18,R12
    056B 2D0A      MOV	R16,R10
    056C DEFA      RCALL	_pset
(0381) 		y=y0+xt;		//第三象限
    056D 88C8      LDD	R12,Y+16
    056E 24DD      CLR	R13
    056F 0EC6      ADD	R12,R22
    0570 1ED7      ADC	R13,R23
(0382) 		pset(x,y);
    0571 2D2C      MOV	R18,R12
    0572 2D0A      MOV	R16,R10
    0573 DEF3      RCALL	_pset
(0383) 		x=x0+yt;		//第四象限
    0574 84AE      LDD	R10,Y+14
    0575 24BB      CLR	R11
    0576 8008      LDD	R0,Y+0
    0577 8019      LDD	R1,Y+1
    0578 0CA0      ADD	R10,R0
    0579 1CB1      ADC	R11,R1
(0384) 		pset(x,y);
    057A 2D2C      MOV	R18,R12
    057B 2D0A      MOV	R16,R10
    057C DEEA      RCALL	_pset
    057D 5F6F      SUBI	R22,0xFF
    057E 4F7F      SBCI	R23,0xFF
    057F 1746      CP	R20,R22
    0580 0757      CPC	R21,R23
    0581 F008      BCS	0x0583
    0582 CF99      RJMP	0x051C
    0583 9624      ADIW	R28,4
    0584 940E0730  CALL	pop_gset5
    0586 9624      ADIW	R28,4
    0587 9508      RET
FILE: D:\PROTEU~1.7\PROTEU~1.7\JOHU\a___EWTS82\m128_my.c
(0001) //ICC-AVR application builder : 2007-2-21 下午 09:30:23
(0002) // Target : M128
(0003) // Crystal: 8.0000Mhz
(0004) 
(0005) #include <iom128v.h>
(0006) #include <macros.h>
(0007) int v=0;
(0008) unsigned int time=0;
(0009) 
(0010) void port_init(void)
(0011) {
_port_init:
    0588 9508      RET
(0012) 
(0013) }
(0014) 
(0015) //ADC initialize
(0016) // Conversion time: 3uS
(0017) void adc_init(void)
(0018) {
(0019)  ADCSRA = 0x00; //disable adc
_adc_init:
    0589 2422      CLR	R2
    058A B826      OUT	0x06,R2
(0020)  ADMUX = 0x00; //select adc input 0
    058B B827      OUT	0x07,R2
(0021)  ACSR  = 0x80;
    058C E880      LDI	R24,0x80
    058D B988      OUT	0x08,R24
(0022)  ADCSRA = 0xE9;
    058E EE89      LDI	R24,0xE9
    058F B986      OUT	0x06,R24
    0590 9508      RET
_adc_isr:
    0591 922A      ST	R2,-Y
    0592 923A      ST	R3,-Y
    0593 924A      ST	R4,-Y
    0594 925A      ST	R5,-Y
    0595 B62F      IN	R2,0x3F
    0596 922A      ST	R2,-Y
(0023) }
(0024) 
(0025) #pragma interrupt_handler adc_isr:22
(0026) void adc_isr(void)
(0027) {
(0028)  //conversion complete, read value (int) using...
(0029)  v=ADCL;            //Read 8 low bits first (important)
    0597 B024      IN	R2,0x04
    0598 2433      CLR	R3
    0599 92300101  STS	v+1,R3
    059B 92200100  STS	v,R2
(0030)  v|=(int)ADCH << 8; //read 2 high bits and shift into top byte
    059D B025      IN	R2,0x05
    059E 2433      CLR	R3
    059F 2C32      MOV	R3,R2
    05A0 2422      CLR	R2
    05A1 90400100  LDS	R4,v
    05A3 90500101  LDS	R5,v+1
    05A5 2842      OR	R4,R2
    05A6 2853      OR	R5,R3
    05A7 92500101  STS	v+1,R5
    05A9 92400100  STS	v,R4
    05AB 9029      LD	R2,Y+
    05AC BE2F      OUT	0x3F,R2
    05AD 9059      LD	R5,Y+
    05AE 9049      LD	R4,Y+
    05AF 9039      LD	R3,Y+
    05B0 9029      LD	R2,Y+
    05B1 9518      RETI
(0031)  
(0032)  
(0033) }
(0034) 
(0035) //call this routine to initialize all peripherals
(0036) void init_devices(void)
(0037) {
(0038)  //stop errant interrupts until set up
(0039)  CLI(); //disable all interrupts
_init_devices:
    05B2 94F8      BCLR	7
(0040)  XDIV  = 0x00; //xtal divider
    05B3 2422      CLR	R2
    05B4 BE2C      OUT	0x3C,R2
(0041)  XMCRA = 0x00; //external memory
    05B5 9220006D  STS	0x6D,R2
(0042)  port_init();
    05B7 DFD0      RCALL	_port_init
(0043)  adc_init();
    05B8 DFD0      RCALL	_adc_init
(0044) timer0_init();
    05B9 D00E      RCALL	_timer0_init
(0045) 
(0046)  MCUCR = 0x00;
    05BA 2422      CLR	R2
    05BB BE25      OUT	0x35,R2
(0047)  EICRA = 0x0A; //extended ext ints
    05BC E08A      LDI	R24,0xA
    05BD 9380006A  STS	0x6A,R24
(0048)  EICRB = 0x00; //extended ext ints
    05BF BE2A      OUT	0x3A,R2
(0049)  EIMSK = 0x03;
    05C0 E083      LDI	R24,3
    05C1 BF89      OUT	0x39,R24
(0050)  TIMSK = 0x01; //timer interrupt sources
    05C2 E081      LDI	R24,1
    05C3 BF87      OUT	0x37,R24
(0051)  ETIMSK = 0x00; //extended timer interrupt sources
    05C4 9220007D  STS	0x7D,R2
(0052)  SEI(); //re-enable interrupts
    05C6 9478      BSET	7
    05C7 9508      RET
(0053)  //all peripherals are now initialized
(0054) }
(0055) 
(0056) 
(0057) 
(0058) //TIMER0 initialize - prescale:64
(0059) // WGM: Normal
(0060) // desired value: 1mSec
(0061) // actual value:  1.000mSec (0.0%)
(0062) void timer0_init(void)
(0063) {
(0064)  TCCR0 = 0x00; //stop
_timer0_init:
    05C8 2422      CLR	R2
    05C9 BE23      OUT	0x33,R2
(0065)  ASSR  = 0x00; //set async mode
    05CA BE20      OUT	0x30,R2
(0066)  TCNT0 = 0x83; //set count
    05CB E883      LDI	R24,0x83
    05CC BF82      OUT	0x32,R24
(0067)  OCR0  = 0x7D;
    05CD E78D      LDI	R24,0x7D
    05CE BF81      OUT	0x31,R24
(0068)  TCCR0 = 0x04; //start timer
    05CF E084      LDI	R24,4
    05D0 BF83      OUT	0x33,R24
    05D1 9508      RET
_timer0_ovf_isr:
    05D2 938A      ST	R24,-Y
    05D3 939A      ST	R25,-Y
    05D4 B78F      IN	R24,0x3F
    05D5 938A      ST	R24,-Y
(0069) }
(0070) 
(0071) #pragma interrupt_handler timer0_ovf_isr:17
(0072) void timer0_ovf_isr(void)
(0073) {
(0074)  TCNT0 = 0x83; //reload counter value
    05D6 E883      LDI	R24,0x83
    05D7 BF82      OUT	0x32,R24
(0075)  time++;
    05D8 91800102  LDS	R24,time
    05DA 91900103  LDS	R25,time+1
    05DC 9601      ADIW	R24,1
    05DD 93900103  STS	time+1,R25
    05DF 93800102  STS	time,R24
    05E1 9189      LD	R24,Y+
    05E2 BF8F      OUT	0x3F,R24
    05E3 9199      LD	R25,Y+
    05E4 9189      LD	R24,Y+
    05E5 9518      RETI
_int0_isr:
    05E6 922A      ST	R2,-Y
    05E7 938A      ST	R24,-Y
    05E8 B62F      IN	R2,0x3F
    05E9 922A      ST	R2,-Y
(0076) }
(0077) #pragma interrupt_handler int0_isr:2
(0078) void int0_isr(void)
(0079) {
(0080)  //external interupt on INT0
(0081)  EIMSK = 0x00;
    05EA 2422      CLR	R2
    05EB BE29      OUT	0x39,R2
(0082)  PORTB=0xfe;
    05EC EF8E      LDI	R24,0xFE
    05ED BB88      OUT	0x18,R24
    05EE 9029      LD	R2,Y+
    05EF BE2F      OUT	0x3F,R2
    05F0 9189      LD	R24,Y+
    05F1 9029      LD	R2,Y+
    05F2 9518      RETI
_int1_isr:
    05F3 922A      ST	R2,-Y
    05F4 938A      ST	R24,-Y
    05F5 B62F      IN	R2,0x3F
    05F6 922A      ST	R2,-Y
(0083) }
(0084) 
(0085) #pragma interrupt_handler int1_isr:3
(0086) void int1_isr(void)
(0087) {
(0088)  //external interupt on INT1
(0089)   EIMSK = 0x00;
    05F7 2422      CLR	R2
    05F8 BE29      OUT	0x39,R2
(0090)   PORTB=0xfd;
    05F9 EF8D      LDI	R24,0xFD
    05FA BB88      OUT	0x18,R24
    05FB 9029      LD	R2,Y+
    05FC BE2F      OUT	0x3F,R2
    05FD 9189      LD	R24,Y+
    05FE 9029      LD	R2,Y+
    05FF 9518      RETI
_asc_tran1:
  asc_p                --> Y+4
  y                    --> R20
  x                    --> R22
    0600 940E0739  CALL	push_gset2
    0602 2F42      MOV	R20,R18
    0603 2F60      MOV	R22,R16
(0091) }
(0092) 
(0093) 
(0094) /*          传送ASCII字母到LCD            */
(0095) /*          x:0x00~0x0f y:0~64            */	
(0096) void asc_tran1(unsigned char x,unsigned char y,unsigned char *asc_p)
(0097)     {
(0098) 	 x+=4;
    0604 5F6C      SUBI	R22,0xFC
(0099) 	 //while((*asc_p)!=0)
(0100) 	    {
(0101) 		 ocmj_write(0xf1);
    0605 EF01      LDI	R16,0xF1
    0606 E010      LDI	R17,0
    0607 940E03BB  CALL	_ocmj_write
(0102) 		 ocmj_write(x);
    0609 2F06      MOV	R16,R22
    060A 2711      CLR	R17
    060B 940E03BB  CALL	_ocmj_write
(0103) 		 ocmj_write(y);
    060D 2F04      MOV	R16,R20
    060E 2711      CLR	R17
    060F 940E03BB  CALL	_ocmj_write
(0104) 		 ocmj_write(*asc_p);
    0611 81EC      LDD	R30,Y+4
    0612 81FD      LDD	R31,Y+5
    0613 8100      LDD	R16,Z+0
    0614 2711      CLR	R17
    0615 940E03BB  CALL	_ocmj_write
(0105) 		 asc_p++;
    0617 818C      LDD	R24,Y+4
    0618 819D      LDD	R25,Y+5
    0619 9601      ADIW	R24,1
    061A 839D      STD	Y+5,R25
    061B 838C      STD	Y+4,R24
(0106) 		 if (x<0x13) 
    061C 3163      CPI	R22,0x13
    061D F410      BCC	0x0620
(0107) 		    x++;
    061E 9563      INC	R22
    061F C002      RJMP	0x0622
(0108) 		 else
(0109) 		   {
(0110) 		    x=0x04;
    0620 E064      LDI	R22,4
(0111) 			y+=8;		    
    0621 5F48      SUBI	R20,0xF8
(0112) 		   }	
(0113) 		}	
    0622 940E072A  CALL	pop_gset2
    0624 9508      RET
_main:
  j                    --> R20
  code                 --> Y+2
  a                    --> R22
  i                    --> R10
  x                    --> R12
    0625 972E      SBIW	R28,0xE
(0114) 	}
(0115) 	
(0116) 	
(0117) 	
(0118) main()

⌨️ 快捷键说明

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