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

📄 02-8a-10.lst

📁 这里有11个用ICCAVR开发的源代码,经DEMO板调试后已经通过.
💻 LST
字号:
__start:
__text_start:
    001A EFCF      LDI	R28,0xFF
    001B E0D2      LDI	R29,2
    001C BFCD      OUT	0x3D,R28
    001D BFDE      OUT	0x3E,R29
    001E 51C0      SUBI	R28,0x10
    001F 40D0      SBCI	R29,0
    0020 EA0A      LDI	R16,0xAA
    0021 8308      STD	Y+0,R16
    0022 2400      CLR	R0
    0023 E0E0      LDI	R30,0
    0024 E0F1      LDI	R31,1
    0025 E011      LDI	R17,1
    0026 30E1      CPI	R30,1
    0027 07F1      CPC	R31,R17
    0028 F011      BEQ	0x002B
    0029 9201      ST	R0,Z+
    002A CFFB      RJMP	0x0026
    002B 8300      STD	Z+0,R16
    002C E3E4      LDI	R30,0x34
    002D E0F0      LDI	R31,0
    002E E0A0      LDI	R26,0
    002F E0B1      LDI	R27,1
    0030 E010      LDI	R17,0
    0031 33E4      CPI	R30,0x34
    0032 07F1      CPC	R31,R17
    0033 F021      BEQ	0x0038
    0034 95C8      LPM
    0035 9631      ADIW	R30,1
    0036 920D      ST	R0,X+
    0037 CFF9      RJMP	0x0031
    0038 D036      RCALL	_main
_exit:
    0039 CFFF      RJMP	_exit
FILE: D:\xij\demo\demo_diy02-8a\1\C语言\02-8a-10\10.c
(0001) //ICC-AVR application builder : 2005-3-11 15:28:29
(0002) // Target : M48
(0003) // Crystal: 8.0000Mhz
(0004) 
(0005) #include <iom48v.h>
(0006) #include <macros.h>
(0007) unsigned char	   size;
(0008) 
(0009) void port_init(void)
(0010) {
(0011)  PORTB = 0xFF;
_port_init:
    003A EF8F      LDI	R24,0xFF
    003B B985      OUT	0x05,R24
(0012)  DDRB  = 0xff;
    003C B984      OUT	0x04,R24
(0013)  PORTC = 0x7F; //m103 output only
    003D E78F      LDI	R24,0x7F
    003E B988      OUT	0x08,R24
(0014)  DDRC  = 0x00;
    003F 2422      CLR	R2
    0040 B827      OUT	0x07,R2
(0015)  PORTD = 0xFF;
    0041 EF8F      LDI	R24,0xFF
    0042 B98B      OUT	0x0B,R24
(0016)  DDRD  = 0xF0;
    0043 EF80      LDI	R24,0xF0
    0044 B98A      OUT	0x0A,R24
    0045 9508      RET
(0017) }
(0018) 
(0019) //call this routine to initialize all peripherals
(0020) void init_devices(void)
(0021) {
(0022)  //stop errant interrupts until set up
(0023)  CLI(); //disable all interrupts
_init_devices:
    0046 94F8      BCLR	7
(0024)  port_init();
    0047 DFF2      RCALL	_port_init
(0025) 
(0026)  MCUCR = 0x00;
    0048 2422      CLR	R2
    0049 BE25      OUT	0x35,R2
(0027)  EICRA = 0x00; //extended ext ints
    004A 92200069  STS	0x69,R2
(0028)  EIMSK = 0x00;
    004C BA2D      OUT	0x1D,R2
(0029)  
(0030)  TIMSK0 = 0x00; //timer 0 interrupt sources
    004D 9220006E  STS	0x6E,R2
(0031)  TIMSK1 = 0x00; //timer 1 interrupt sources
    004F 9220006F  STS	0x6F,R2
(0032)  TIMSK2 = 0x00; //timer 2 interrupt sources
    0051 92200070  STS	0x70,R2
(0033)  
(0034)  PCMSK0 = 0x00; //pin change mask 0 
    0053 9220006B  STS	0x6B,R2
(0035)  PCMSK1 = 0x00; //pin change mask 1 
    0055 9220006C  STS	0x6C,R2
(0036)  PCMSK2 = 0x00; //pin change mask 2
    0057 9220006D  STS	0x6D,R2
(0037)  PCICR = 0x00; //pin change enable 
    0059 92200068  STS	0x68,R2
(0038)  PRR = 0x00; //power controller
    005B 92200064  STS	0x64,R2
(0039)  SEI(); //re-enable interrupts
    005D 9478      BSET	7
    005E 9508      RET
(0040)  //all peripherals are now initialized
(0041) }
(0042) 
(0043) /*前行*/
(0044) void	forward(void)
(0045) {
(0046)  PORTD = 0X9F;
_forward:
    005F E98F      LDI	R24,0x9F
    0060 B98B      OUT	0x0B,R24
(0047)  PORTB = 0XF8;
    0061 EF88      LDI	R24,0xF8
    0062 B985      OUT	0x05,R24
    0063 9508      RET
(0048) }
(0049) 
(0050) /*停止*/
(0051) void	stop(void)
(0052) {
(0053)  PORTD = 0XFF;
_stop:
    0064 EF8F      LDI	R24,0xFF
    0065 B98B      OUT	0x0B,R24
(0054)  PORTB = 0XFF;
    0066 B985      OUT	0x05,R24
    0067 9508      RET
(0055) }
(0056) 
(0057) void mic_startup()
(0058) {//声控启动程序运行
_mic_startup:
  mic_in               --> R16
    0068 C004      RJMP	0x006D
(0059)  unsigned char mic_in;
(0060)  while(1)
(0061)    {	  //无键按下等待
(0062)     mic_in=PINC & 0x20;     //pc5=0
    0069 B106      IN	R16,0x06
    006A 7200      ANDI	R16,0x20
(0063)     if(mic_in==0){break;}
    006B F409      BNE	0x006D
    006C C001      RJMP	0x006E
    006D CFFB      RJMP	0x0069
    006E 9508      RET
(0064)    }//有键按下运行下面的程序
(0065) }
(0066) 
(0067) /*主程序*/
(0068) void   main()
(0069) {
(0070)  unsigned char i;
(0071)  init_devices();
_main:
  i                    --> Y+1
    006F DFD6      RCALL	_init_devices
(0072) demand:
(0073) 	   mic_startup();
    0070 DFF7      RCALL	_mic_startup
(0074)  //while(1){
(0075)  //i = PINC&20;
(0076)  //if(i == 0){
(0077)  size++;
    0071 91800100  LDS	R24,size
    0073 5F8F      SUBI	R24,0xFF
    0074 93800100  STS	size,R24
    0076 C00F      RJMP	0x0086
(0078)  //break;
(0079)  //}
(0080)  //}
(0081)  while(1)
(0082)  {
(0083)  if(size==1)
    0077 91800100  LDS	R24,size
    0079 3081      CPI	R24,1
    007A F411      BNE	0x007D
(0084)  		{
(0085)  		 forward();}
    007B DFE3      RCALL	_forward
    007C CFF3      RJMP	0x0070
(0086)   else	if(size==2)
    007D 91800100  LDS	R24,size
    007F 3082      CPI	R24,2
    0080 F779      BNE	0x0070
(0087)   		   {
(0088)  		   	stop();
    0081 DFE2      RCALL	_stop
(0089) 			size=0;}
    0082 2422      CLR	R2
    0083 92200100  STS	size,R2
(0090)   goto	 demand;
FILE: <library>
    0085 CFEA      RJMP	0x0070
    0086 CFF0      RJMP	0x0077
    0087 9508      RET

⌨️ 快捷键说明

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