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

📄 c52mcu_m16.lst

📁 很实用的单片机例程
💻 LST
字号:
Interrupt Vectors
    00000 940C 002A JMP	__start|__text_start

Program Code (text area)
__start|__text_start:
    0002A E5CF      LDI	R28,0x5F
    0002B E0D4      LDI	R29,4
    0002C BFCD      OUT	0x3D,R28
    0002D BFDE      OUT	0x3E,R29
    0002E 51CE      SUBI	R28,0x1E
    0002F 40D0      SBCI	R29,0
    00030 EA0A      LDI	R16,0xAA
    00031 8308      ST	Y,R16
    00032 2400      CLR	R0
    00033 E6E0      LDI	R30,0x60
    00034 E0F0      LDI	R31,0
    00035 E010      LDI	R17,0
    00036 36E0      CPI	R30,0x60
    00037 07F1      CPC	R31,R17
    00038 F011      BEQ	0x003B
    00039 9201      ST	Z+,R0
    0003A CFFB      RJMP	0x0036
    0003B 8300      ST	Z,R16
    0003C E5E4      LDI	R30,0x54
    0003D E0F0      LDI	R31,0
    0003E E6A0      LDI	R26,0x60
    0003F E0B0      LDI	R27,0
    00040 E010      LDI	R17,0
    00041 E000      LDI	R16,0
    00042 BF0B      OUT	0x3B,R16
    00043 35E4      CPI	R30,0x54
    00044 07F1      CPC	R31,R17
    00045 F021      BEQ	0x004A
    00046 95C8      LPM
    00047 9631      ADIW	R30,1
    00048 920D      ST	X+,R0
    00049 CFF9      RJMP	0x0043
    0004A 940E 009F CALL	_main
_exit:
    0004C CFFF      RJMP	_exit
_Delayus:
  i                    --> R20
  US                   --> R10
    0004D 940E 00BE CALL	push_xgset300C
    0004F 0158      MOVW	R10,R16
FILE: C:\iccv7avr\include\HJ-1G_AVR.H
(0001) /*******************************************
(0002)   文件:HJ-1G_AVR.H
(0003)   功能:定义一些AVR_HJ-2G开发板上应用程序用到的常量
(0004) /******************************************/
(0005) 
(0006) #include <iom16v.h>			//包含型号头文件
(0007) #include <macros.h>			//包含"位"操作头文件
(0008) 
(0009) /******************数据类型宏定义******************/
(0010) #define uchar unsigned char
(0011) #define uint unsigned int
(0012) 
(0013) /******************数码管和LED常量******************/
(0014) #define LEDLK PA2	//LED锁存器控制端
(0015) #define SEGLK PA3	//数码管段选锁存器控制端
(0016) #define BITLK PA4	//数码管位选锁存器控制端
(0017) 
(0018) #define TRUE 1
(0019) #define FALSE 0
(0020) #define ALLLED 0XFF
(0021) /*******************************************
(0022) 函数名称: Delayus
(0023) 功    能: 延时指定微秒(8M晶振)
(0024) 参    数: US--延时的微秒数(大约,不是很精确,MS越大越准确)
(0025) 返回值  : 无
(0026) /********************************************/
(0027) void Delayus(uint US)		  
(0028) {
(0029)  uint i;
(0030)  US=US*5/4;		  	 //5/4是在8MHz晶振下,通过软件仿真反复实验得到的数值
    00050 E005      LDI	R16,5
    00051 E010      LDI	R17,0
    00052 0195      MOVW	R18,R10
    00053 940E 00AE CALL	empy16s
    00055 0158      MOVW	R10,R16
    00056 94B6      LSR	R11
    00057 94A7      ROR	R10
    00058 94B6      LSR	R11
    00059 94A7      ROR	R10
(0031)  for( i=0;i<US;i++); 
    0005A 2744      CLR	R20
    0005B 2755      CLR	R21
    0005C C002      RJMP	0x005F
    0005D 5F4F      SUBI	R20,0xFF
    0005E 4F5F      SBCI	R21,0xFF
    0005F 154A      CP	R20,R10
    00060 055B      CPC	R21,R11
    00061 F3D8      BCS	0x005D
    00062 940C 00C3 JMP	pop_xgset300C
_Delayms:
  i                    --> R20
  j                    --> R22
  MS                   --> R16
    00064 940E 00C8 CALL	push_xgsetF000
(0032) }
(0033) /*******************************************
(0034) 函数名称: Delayms
(0035) 功    能: 延时指定毫秒(8M晶振)
(0036) 参    数: MS--延时的毫秒数
(0037) 返回值  : 无
(0038) /********************************************/
(0039) void Delayms(uint MS)		  
(0040) {
(0041)  uint i,j;
(0042)  for( i=0;i<MS;i++)
    00066 2744      CLR	R20
    00067 2755      CLR	R21
    00068 C00B      RJMP	0x0074
(0043)  for(j=0;j<1141;j++);	//1141是在8MHz晶振下,通过软件仿真反复实验得到的数值
    00069 2766      CLR	R22
    0006A 2777      CLR	R23
    0006B C002      RJMP	0x006E
    0006C 5F6F      SUBI	R22,0xFF
    0006D 4F7F      SBCI	R23,0xFF
    0006E 3765      CPI	R22,0x75
    0006F E0E4      LDI	R30,4
    00070 077E      CPC	R23,R30
    00071 F3D0      BCS	0x006C
    00072 5F4F      SUBI	R20,0xFF
    00073 4F5F      SBCI	R21,0xFF
    00074 1740      CP	R20,R16
    00075 0751      CPC	R21,R17
    00076 F390      BCS	0x0069
    00077 940C 00CD JMP	pop_xgsetF000
(0044) }
(0045) /*******************************************
(0046) 函数名称: Board_init
(0047) 功    能: 初始化实验板,关闭全部功能
(0048) 参    数: 无
(0049) 返回值  : 无
(0050) /********************************************/
(0051) void Board_init(void)
(0052) {
(0053) 	DDRA=0xFF;	//将四个IO口全部配置为输出
_Board_init:
    00079 EF8F      LDI	R24,0xFF
    0007A BB8A      OUT	0x1A,R24
(0054) 	DDRB=0xFF;
    0007B BB87      OUT	0x17,R24
(0055) 	DDRC=0xFF;
    0007C BB84      OUT	0x14,R24
(0056) 	DDRD=0xFF;
    0007D BB81      OUT	0x11,R24
(0057) 
(0058) 	SPCR=0x00;	//还原SPI口,使其为正常端口	
    0007E 2422      CLR	R2
    0007F B82D      OUT	0x0D,R2
(0059) 
(0060) 	PORTA|=BIT(PA6);//(BEEP)关闭蜂鸣器
    00080 9ADE      SBI	0x1B,6
(0061) 	PORTC&=~BIT(PC6);	  //(RELAY)初始化继电器为常闭连接状态	
    00081 98AE      CBI	0x15,6
(0062) 	PORTA&=~BIT(PA1);	//关闭SPI总线DA
    00082 98D9      CBI	0x1B,1
(0063) 	PORTB=0xFF;	//关闭LED
    00083 BB88      OUT	0x18,R24
(0064) 	PORTA|=BIT(LEDLK);	//锁存数据,使LED熄灭
    00084 9ADA      SBI	0x1B,2
(0065)  	Delayus(5);		
    00085 E005      LDI	R16,5
    00086 E010      LDI	R17,0
    00087 DFC5      RCALL	_Delayus
(0066)  	PORTA&=~BIT(LEDLK);
    00088 98DA      CBI	0x1B,2
(0067) 	
(0068) 	PORTB=0x00;	   //输出段选
    00089 2422      CLR	R2
    0008A BA28      OUT	0x18,R2
(0069)  	PORTA|=BIT(SEGLK);		  
    0008B 9ADB      SBI	0x1B,3
(0070)  	Delayus(50);			  
    0008C E302      LDI	R16,0x32
    0008D E010      LDI	R17,0
    0008E DFBE      RCALL	_Delayus
(0071)  	PORTA&=~BIT(SEGLK);	    
    0008F 98DB      CBI	0x1B,3
(0072)  	
(0073)  	PORTB=0xFF;	   //输出位选
    00090 EF8F      LDI	R24,0xFF
    00091 BB88      OUT	0x18,R24
(0074)  	PORTA|=BIT(BITLK);		   
    00092 9ADC      SBI	0x1B,4
(0075)  	Delayus(50);				   
    00093 E302      LDI	R16,0x32
    00094 E010      LDI	R17,0
    00095 DFB7      RCALL	_Delayus
(0076)  	PORTA&=~BIT(BITLK);	   
    00096 98DC      CBI	0x1B,4
(0077) 	
(0078) 	PORTD=0xFF;
    00097 EF8F      LDI	R24,0xFF
    00098 BB82      OUT	0x12,R24
(0079) 	PORTA|=BIT(PA7);
    00099 9ADF      SBI	0x1B,7
(0080) 	Delayus(50);
    0009A E302      LDI	R16,0x32
    0009B E010      LDI	R17,0
    0009C DFB0      RCALL	_Delayus
(0081) 	PORTA&=~BIT(PA7);
    0009D 98DF      CBI	0x1B,7
    0009E 9508      RET
FILE: C:\HJ-1G-AVR\1LED~1\main.c
(0001) //开发环境:HJ-1G HJ-3G 开发板+AVR增强包套装
(0002) //芯片:ATMEGA16A
(0003) //编译器:ICCV7
(0004) //编写:慧净电子
(0005) //网址:WWW.HLMCU.COM   QQ:121350852
(0006) //点亮HJ-1G/3G开发板上的1个LED灯
(0007) #include "iom16v.h"
(0008) #include "macros.h"
(0009) #include <HJ-1G_AVR.H>		//包含自定义常量头文件
(0010) void main()
(0011) {
(0012)  	 //DDRA=DDRA|BIT(2);		//PA2为输出状态
(0013) 	 //PORTA=PORTA|BIT(2);	  //PA2输出高电平
(0014) 	 
(0015) 	 DDRB=0xff;				  //PB0~7为输出状态
_main:
    0009F EF8F      LDI	R24,0xFF
    000A0 BB87      OUT	0x17,R24
    000A1 C00A      RJMP	0x00AC
(0016) 
(0017) 	 while(1)				//程式停止。
(0018) 	 {
(0019) 	 	PORTB=0xfe;				//PB0为输出低电平,而其余为高电平,亦即打亮LED0		
    000A2 EF8E      LDI	R24,0xFE
    000A3 BB88      OUT	0x18,R24
(0020) 		//PORTB&=~BIT(0)		//等价
(0021) 	   Delayms(50);
    000A4 E302      LDI	R16,0x32
    000A5 E010      LDI	R17,0
    000A6 DFBD      RCALL	_Delayms
(0022) 	    PORTB=0xff;	
    000A7 EF8F      LDI	R24,0xFF
    000A8 BB88      OUT	0x18,R24
(0023) 		Delayms(50);
FILE: <library>
    000A9 E302      LDI	R16,0x32
    000AA E010      LDI	R17,0
    000AB DFB8      RCALL	_Delayms
    000AC CFF5      RJMP	0x00A2
    000AD 9508      RET
empy16s:
    000AE 920A      ST	-Y,R0
    000AF 921A      ST	-Y,R1
    000B0 938A      ST	-Y,R24
    000B1 939A      ST	-Y,R25
    000B2 9F02      MUL	R16,R18
    000B3 01C0      MOVW	R24,R0
    000B4 9F12      MUL	R17,R18
    000B5 0D90      ADD	R25,R0
    000B6 9F03      MUL	R16,R19
    000B7 0D90      ADD	R25,R0
    000B8 018C      MOVW	R16,R24
    000B9 9199      LD	R25,Y+
    000BA 9189      LD	R24,Y+
    000BB 9019      LD	R1,Y+
    000BC 9009      LD	R0,Y+
    000BD 9508      RET
push_xgset300C:
    000BE 935A      ST	-Y,R21
    000BF 934A      ST	-Y,R20
    000C0 92BA      ST	-Y,R11
    000C1 92AA      ST	-Y,R10
    000C2 9508      RET
pop_xgset300C:
    000C3 90A9      LD	R10,Y+
    000C4 90B9      LD	R11,Y+
    000C5 9149      LD	R20,Y+
    000C6 9159      LD	R21,Y+
    000C7 9508      RET
push_xgsetF000:
    000C8 937A      ST	-Y,R23
    000C9 936A      ST	-Y,R22
    000CA 935A      ST	-Y,R21
    000CB 934A      ST	-Y,R20
    000CC 9508      RET
pop_xgsetF000:
    000CD 9149      LD	R20,Y+
    000CE 9159      LD	R21,Y+
    000CF 9169      LD	R22,Y+
    000D0 9179      LD	R23,Y+
    000D1 9508      RET

⌨️ 快捷键说明

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