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

📄 led.lst

📁 AVR开发板实验源代码LED流水灯实验源代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
__start:
__text_start:
    0033 E5CF      LDI	R28,0x5F
    0034 E0D4      LDI	R29,4
    0035 BFCD      OUT	0x3D,R28
    0036 BFDE      OUT	0x3E,R29
    0037 51C0      SUBI	R28,0x10
    0038 40D0      SBCI	R29,0
    0039 EA0A      LDI	R16,0xAA
    003A 8308      STD	Y+0,R16
    003B 2400      CLR	R0
    003C E6E0      LDI	R30,0x60
    003D E0F0      LDI	R31,0
    003E E010      LDI	R17,0
    003F 36E3      CPI	R30,0x63
    0040 07F1      CPC	R31,R17
    0041 F011      BEQ	0x0044
    0042 9201      ST	R0,Z+
    0043 CFFB      RJMP	0x003F
    0044 8300      STD	Z+0,R16
    0045 E6E6      LDI	R30,0x66
    0046 E0F0      LDI	R31,0
    0047 E6A0      LDI	R26,0x60
    0048 E0B0      LDI	R27,0
    0049 E010      LDI	R17,0
    004A 36E6      CPI	R30,0x66
    004B 07F1      CPC	R31,R17
    004C F021      BEQ	0x0051
    004D 95C8      LPM
    004E 9631      ADIW	R30,1
    004F 920D      ST	R0,X+
    0050 CFF9      RJMP	0x004A
    0051 940E01B4  CALL	_main
_exit:
    0053 CFFF      RJMP	_exit
FILE: D:\icc\include\delay.h
(0001) //#define 	F_CPU 		12000000
(0002) #define 	F_CPU 		11059200
(0003) //#define 	F_CPU 			8000000
(0004) //#define 	F_CPU 			7372800
(0005) //#define 	F_CPU 			4000000
(0006) /*************************************************************************
(0007) 通用延时头文件:
(0008) 			   delay_nus(n)延时n微秒
(0009) 			   delay_nms(n)延时n毫秒
(0010) *************************************************************************/
(0011) #if F_CPU == 12000000
(0012) 	void delay_nus(unsigned int time)
(0013) 	{
(0014) 	 	while (time!=0)
(0015) 		{
(0016) 		 	NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();
(0017) 			time--;
(0018) 		}
(0019) 	}
(0020) 	void delay_nms(unsigned int time)
(0021) 	{
(0022)  	 	unsigned int i;
(0023) 		while (time!=0)
(0024) 		{
(0025) 		 	for(i=0;i<1740;i++);
(0026) 			time--;
(0027) 		}
(0028) 	}
(0029) #endif
(0030) 
(0031) #if F_CPU == 11059200
(0032) 	void delay_nus(unsigned int time)
(0033) 	{
_delay_nus:
  time                 --> R16
    0054 C009      RJMP	0x005E
(0034) 	 	while (time!=0)
(0035) 		{
(0036) 		 	NOP();NOP();NOP();NOP();NOP();NOP();NOP();
    0055 0000      NOP
    0056 0000      NOP
    0057 0000      NOP
    0058 0000      NOP
    0059 0000      NOP
    005A 0000      NOP
    005B 0000      NOP
(0037) 			time--;
    005C 5001      SUBI	R16,1
    005D 4010      SBCI	R17,0
    005E 3000      CPI	R16,0
    005F 0701      CPC	R16,R17
    0060 F7A1      BNE	0x0055
    0061 9508      RET
_delay_nms:
  i                    --> R20
  time                 --> R16
    0062 940E0257  CALL	push_gset1
(0038) 		}
(0039) 	}
(0040) 	void delay_nms(unsigned int time)
(0041) 	{
    0064 C00B      RJMP	0x0070
(0042)  	 	unsigned int i;
(0043) 		while (time!=0)
(0044) 		{
(0045) 		 	for(i=0;i<1580;i++);	
    0065 2744      CLR	R20
    0066 2755      CLR	R21
    0067 C002      RJMP	0x006A
    0068 5F4F      SUBI	R20,0xFF
    0069 4F5F      SBCI	R21,0xFF
    006A 324C      CPI	R20,0x2C
    006B E0E6      LDI	R30,6
    006C 075E      CPC	R21,R30
    006D F3D0      BCS	0x0068
(0046) 			time--;
    006E 5001      SUBI	R16,1
    006F 4010      SBCI	R17,0
    0070 3000      CPI	R16,0
    0071 0701      CPC	R16,R17
    0072 F791      BNE	0x0065
    0073 940E025A  CALL	pop_gset1
    0075 9508      RET
_Scan_Key:
  i                    --> R20
    0076 940E0257  CALL	push_gset1
FILE: D:\icc\include\AVR_XQV12.h
(0001) 
(0002) 
(0003) #define		TRUE			0xff
(0004) #define		FALSE			0x00
(0005) #define		null			0x00
(0006) #define 	Open_LED		PORTA|=0x10
(0007) #define 	Close_LED		PORTA&=~0x10
(0008) #define		LED				PORTB
(0009) #define		SMG				PORTB
(0010) #define 	Open_SMG_DATA	PORTA|=0x08
(0011) #define 	Close_SMG_DATA	PORTA&=~0x08
(0012) #define 	Open_SMG_BIT	PORTA|=0x04
(0013) #define 	Close_SMG_BIT	PORTA&=~0x04
(0014) #define		KEY0			(PIND&0x04)
(0015) #define		KEY1			(PIND&0x08)
(0016) #define 	SetSclk			(PORTC|=0x80)
(0017) #define 	ClrSclk			(PORTC&=~0x80)
(0018) #define 	SetRs			(PORTD|=0x40)
(0019) #define 	ClrRs			(PORTD&=~0x40)
(0020) #define 	SetSid			(PORTC|=0x40)
(0021) #define 	ClrSid			(PORTC&=~0x40)
(0022) #define 	D0 				0x20
(0023) #define 	port 			PORTA
(0024) #define 	ddrt 			DDRA
(0025) #define 	pin 			PINA
(0026) #define 	Set_CS5615 		(PORTA|=0x80)
(0027) #define 	Clr_CS5615 		(PORTA&=~0x80)
(0028) #define 	Period 			0x6bfe			//PWM脉冲周期20ms
(0029) #define 	START 		   	0x08
(0030) #define 	MT_SLA_ACK 	   	0x18
(0031) #define 	MT_DATA_ACK    	0x28
(0032) #define 	RE_START 	   	0x10
(0033) #define 	MR_SLA_ACK 	   	0x40
(0034) #define 	MR_DATA_NOACK  	0x58
(0035) #define 	rd_device_add 	0xa3			//定义器件读地址
(0036) #define 	wr_device_add 	0xa2			//定义器件写地址
(0037) #define 	START 			0x08
(0038) #define 	MT_SLA_ACK 		0x18
(0039) #define 	MT_DATA_ACK 	0x28
(0040) #define 	RE_START 		0x10
(0041) #define 	MR_SLA_ACK 		0x40
(0042) #define 	MR_DATA_NOACK 	0x58
(0043) #define 	MR_DATA_ACK 	0x50
(0044) 
(0045) /********************************************
(0046) #define rd_device_add 		0xa3			//定义器件读地址
(0047) #define wr_device_add 		0xa2			//定义器件写地址
(0048) #define START 				0x08
(0049) #define MT_SLA_ACK 			0x18
(0050) #define MT_DATA_ACK 		0x28
(0051) #define RE_START 			0x10
(0052) #define MR_SLA_ACK 			0x40
(0053) #define MR_DATA_NOACK 		0x58
(0054) #define MR_DATA_ACK 		0x50
(0055) #define		START			0x08
(0056) #define		MT_SLA_ACK		0x18
(0057) #define		MT_DATA_ACK		0x28
(0058) #define		RE_START		0x10
(0059) #define		MR_SLA_ACK		0x40
(0060) #define		MR_DATA_NOACK	0x58
(0061) unsigned char sing=0;
(0062) 
(0063) unsigned char read_shijian[7]={0x02,0x21,0x16,0x24,0x00,0x12,0x27};
(0064) unsigned char write_shijian[7]={0x00,0x52,0x10,0x28,0x04,0x05,0x07};
(0065) unsigned char temp[3];
(0066) 
(0067) 
(0068) //********************************************
(0069) 
(0070) 
(0071) void Start(void)
(0072) {TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN);}
(0073) 
(0074) void Wait(void)
(0075) {while((TWCR&0x80)!=0x80);}
(0076) 
(0077) unsigned char TestAck(void)
(0078) {unsigned char twsr;
(0079) twsr=TWSR&0xf8;
(0080) return twsr;}
(0081) 
(0082) void Write8Bit(unsigned char data)
(0083) {TWDR=data;TWCR=(1<<TWINT)|(1<<TWEN);}
(0084) 
(0085) void Stop(void)
(0086) {TWCR=(1<<TWINT)|(1<<TWSTO)|(1<<TWEN);}
(0087) 
(0088) void Ack(void)
(0089) {TWCR=(1<<TWINT)|(1<<TWEA)|(1<<TWEN);}
(0090) 
(0091)  void Twi(void)
(0092) {TWCR=(1<<TWINT)|(1<<TWEN);}
(0093) 
(0094) *********************************************/
(0095) 
(0096) 
(0097) 
(0098) 
(0099) 
(0100) 
(0101) #if AD==TRUE					//条件编译指令
(0102) unsigned char Adc_Mux=0;
(0103) unsigned int Adc0_Rel=0;
(0104) unsigned int Adc1_Rel=0;
(0105) unsigned int Adc0_Catch=0;
(0106) unsigned int Adc1_Catch=0;
(0107) unsigned int Adc0_Conver[20];
(0108) unsigned int Adc1_Conver[20];
(0109) unsigned char Adc0_F;
(0110) unsigned char Adc1_F;
(0111) #endif	 	  		 		 	//条件编译结束
(0112) unsigned char Key_Number;			   	   	//全局变量:按键标志
(0113) unsigned int temprter;
(0114) #pragma data:code 
(0115) const unsigned char SMG_Conver[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
(0116) 		                        0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};
(0117) 				   							//数码管译码数组
(0118) #pragma data:data
(0119) /*******************************************************/
(0120) /******   函数名称: Scan_Key()                    ******/
(0121) /******   功    能: 键盘扫描                      ******/
(0122) /******   参    数: 无                            ******/
(0123) /******   返回值  : 按键的键值,无按键时返回null  ******/
(0124) /*******************************************************/
(0125) unsigned char Scan_Key(void)
(0126) {
(0127)  	unsigned char i;
(0128) 	PORTC=0x00;
    0078 2422      CLR	R2
    0079 BA25      OUT	0x15,R2
(0129) 	DDRC =0xf0;	  						//设置端口高4位输出,低四位输入
    007A EF80      LDI	R24,0xF0
    007B BB84      OUT	0x14,R24
(0130) 	PORTC=0x0f;							//低四位内部上拉
    007C E08F      LDI	R24,0xF
    007D BB85      OUT	0x15,R24
(0131) 	delay_nus(1);						//短暂延时
    007E E001      LDI	R16,1
    007F E010      LDI	R17,0
    0080 DFD3      RCALL	_delay_nus
(0132) 	i=PINC&0x0f;						//读取端口电平
    0081 B343      IN	R20,0x13
    0082 704F      ANDI	R20,0xF
(0133) 	if(i!=0x0f)							//判断是否有键按下
    0083 304F      CPI	R20,0xF
    0084 F0B1      BEQ	0x009B
(0134) 	{
(0135) 	 	PORTC=0x00;
    0085 2422      CLR	R2
    0086 BA25      OUT	0x15,R2
(0136) 		DDRC =0x0f;						//设置端口低4位输出,高四位输入
    0087 E08F      LDI	R24,0xF
    0088 BB84      OUT	0x14,R24
(0137) 		PORTC=0xf0;						//高四位内部上拉
    0089 EF80      LDI	R24,0xF0
    008A BB85      OUT	0x15,R24
(0138) 		delay_nus(10);					//短暂延时,去抖
    008B E00A      LDI	R16,0xA
    008C E010      LDI	R17,0
    008D DFC6      RCALL	_delay_nus
(0139) 		if((PINC&0xf0)!=0xf0)			//再次判断是否有键按下
    008E B383      IN	R24,0x13
    008F 7F80      ANDI	R24,0xF0
    0090 3F80      CPI	R24,0xF0
    0091 F049      BEQ	0x009B
(0140) 		{
(0141) 		 	i+=(PINC&0xf0);				//读取端口电平
    0092 B383      IN	R24,0x13
    0093 7F80      ANDI	R24,0xF0
    0094 0F48      ADD	R20,R24
(0142) 			while((PINC&0xf0)!=0xf0);	//等待按键释放
    0095 B383      IN	R24,0x13
    0096 7F80      ANDI	R24,0xF0
    0097 3F80      CPI	R24,0xF0
    0098 F7E1      BNE	0x0095
(0143) 			return i;					//返回键值
    0099 2F04      MOV	R16,R20
    009A C001      RJMP	0x009C
(0144) 		}
(0145) 	}
(0146) 	return null;   						//无按键按下返回null
    009B 2700      CLR	R16
    009C 940E025A  CALL	pop_gset1
    009E 9508      RET
_Key_Num:
  key                  --> R16
    009F 940E0257  CALL	push_gset1
(0147) }
(0148) 
(0149) /*******************************************************/
(0150) /******   函数名称: Key_Num()                     ******/
(0151) /******   功    能: 转换键值为0-f十六进制数       ******/
(0152) /******   参    数: key--键值                     ******/
(0153) /******   返回值  : 0-f                           ******/
(0154) /*******************************************************/
(0155) unsigned char Key_Num(unsigned char key)
(0156) {
(0157)  	switch(key)
    00A1 2F40      MOV	R20,R16
    00A2 2755      CLR	R21
    00A3 3B47      CPI	R20,0xB7
    00A4 E0E0      LDI	R30,0
    00A5 075E      CPC	R21,R30
    00A6 F409      BNE	0x00A8
    00A7 C054      RJMP	0x00FC
    00A8 3B4B      CPI	R20,0xBB
    00A9 E0E0      LDI	R30,0
    00AA 075E      CPC	R21,R30
    00AB F409      BNE	0x00AD
    00AC C057      RJMP	0x0104
    00AD 3B4D      CPI	R20,0xBD
    00AE E0E0      LDI	R30,0
    00AF 075E      CPC	R21,R30
    00B0 F409      BNE	0x00B2
    00B1 C05A      RJMP	0x010C
    00B2 3B4E      CPI	R20,0xBE
    00B3 E0E0      LDI	R30,0
    00B4 075E      CPC	R21,R30
    00B5 F409      BNE	0x00B7
    00B6 C05D      RJMP	0x0114
    00B7 EB8E      LDI	R24,0xBE
    00B8 E090      LDI	R25,0
    00B9 1784      CP	R24,R20
    00BA 0795      CPC	R25,R21
    00BB F0AC      BLT	0x00D1
    00BC 3747      CPI	R20,0x77

⌨️ 快捷键说明

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