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

📄 dac_tlc5615.lst

📁 ATmega16-TLC5615
💻 LST
📖 第 1 页 / 共 2 页
字号:
__start:
__text_start:
      33 E5CF      LDI	R28,0x5F
      34 E0D4      LDI	R29,4
      35 BFCD      OUT	0x3D,R28
      36 BFDE      OUT	0x3E,R29
      37 51C0      SUBI	R28,0x10
      38 40D0      SBCI	R29,0
      39 EA0A      LDI	R16,0xAA
      3A 8308      STD	Y+0,R16
      3B 2400      CLR	R0
      3C E6E0      LDI	R30,0x60
      3D E0F0      LDI	R31,0
      3E E010      LDI	R17,0
      3F 36E3      CPI	R30,0x63
      40 07F1      CPC	R31,R17
      41 F011      BEQ	0x0044
      42 9201      ST	R0,Z+
      43 CFFB      RJMP	0x003F
      44 8300      STD	Z+0,R16
      45 E6E6      LDI	R30,0x66
      46 E0F0      LDI	R31,0
      47 E6A0      LDI	R26,0x60
      48 E0B0      LDI	R27,0
      49 E010      LDI	R17,0
      4A 36E6      CPI	R30,0x66
      4B 07F1      CPC	R31,R17
      4C F021      BEQ	0x0051
      4D 95C8      LPM
      4E 9631      ADIW	R30,1
      4F 920D      ST	R0,X+
      50 CFF9      RJMP	0x004A
      51 940E 0183 CALL	_main
_exit:
      53 CFFF      RJMP	_exit
FILE: D:\垃圾站\5615\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
      54 C009      RJMP	0x005E
(0034) 	 	while (time!=0)
(0035) 		{
(0036) 		 	NOP();NOP();NOP();NOP();NOP();NOP();NOP();
      55 0000      NOP
      56 0000      NOP
      57 0000      NOP
      58 0000      NOP
      59 0000      NOP
      5A 0000      NOP
      5B 0000      NOP
(0037) 			time--;
      5C 5001      SUBI	R16,1
      5D 4010      SBCI	R17,0
      5E 3000      CPI	R16,0
      5F 0701      CPC	R16,R17
      60 F7A1      BNE	0x0055
      61 9508      RET
_delay_nms:
  i                    --> R20
  time                 --> R16
      62 934A      ST	R20,-Y
      63 935A      ST	R21,-Y
(0038) 		}
(0039) 	}
(0040) 	void delay_nms(unsigned int time)
(0041) 	{
      64 C00B      RJMP	0x0070
(0042)  	 	unsigned int i;
(0043) 		while (time!=0)
(0044) 		{
(0045) 		 	for(i=0;i<1580;i++);	
      65 2744      CLR	R20
      66 2755      CLR	R21
      67 C002      RJMP	0x006A
      68 5F4F      SUBI	R20,0xFF
      69 4F5F      SBCI	R21,0xFF
      6A 324C      CPI	R20,0x2C
      6B E0E6      LDI	R30,6
      6C 075E      CPC	R21,R30
      6D F3D0      BCS	0x0068
(0046) 			time--;
      6E 5001      SUBI	R16,1
      6F 4010      SBCI	R17,0
      70 3000      CPI	R16,0
      71 0701      CPC	R16,R17
      72 F791      BNE	0x0065
      73 9159      LD	R21,Y+
      74 9149      LD	R20,Y+
      75 9508      RET
_Scan_Key:
  i                    --> R20
      76 934A      ST	R20,-Y
      77 935A      ST	R21,-Y
FILE: D:\垃圾站\5615\AVR_XQV12.h
(0001) 
(0002) #define		TRUE			0xff					//真
(0003) #define		FALSE			0x00					//假
(0004) #define		null			0x00					//空
(0005) #define 	Open_LED		PORTA|=0x10				//使能LED
(0006) #define 	Close_LED		PORTA&=~0x10			//关闭LED
(0007) #define		LED				PORTB					//LED端口
(0008) #define		SMG				PORTB					//数码管端口
(0009) #define 	Open_SMG_DATA	PORTA|=0x08				//使能数码管数据
(0010) #define 	Close_SMG_DATA	PORTA&=~0x08			//关闭数码管数据
(0011) #define 	Open_SMG_BIT	PORTA|=0x04				//使能数码管位选择
(0012) #define 	Close_SMG_BIT	PORTA&=~0x04			//关闭数码管位选择
(0013) #define		KEY0			(PIND&0x04)				//INT0
(0014) #define		KEY1			(PIND&0x08)				//INT1
(0015) #define 	SetSclk			(PORTC|=0x80)			//LCD12864 CLK
(0016) #define 	ClrSclk			(PORTC&=~0x80)
(0017) #define 	SetRs			(PORTD|=0x40) 			//LCD12864 CS
(0018) #define 	ClrRs			(PORTD&=~0x40)
(0019) #define 	SetSid			(PORTC|=0x40) 			//LCD12864 DATA
(0020) #define 	ClrSid			(PORTC&=~0x40)
(0021) #define 	D0 				0x20		  			//18B20 DATA
(0022) #define 	port 			PORTA
(0023) #define 	ddrt 			DDRA
(0024) #define 	pin 			PINA
(0025) #define 	Set_CS5615 		(PORTA|=0x10)			//片选5615
(0026) #define 	Clr_CS5615 		(PORTA&=~0x10)			//释放
(0027) #define 	Period 			0x6bfe					//PWM脉冲周期20ms
(0028) #define 	rd_device_add 	0xa3					//定义器件读地址
(0029) #define 	wr_device_add 	0xa2					//定义器件写地址
(0030) #define 	START 		   	0x08					//起始信号
(0031) #define 	MT_SLA_ACK 	   	0x18
(0032) #define 	MT_DATA_ACK    	0x28
(0033) #define 	RE_START 	   	0x10
(0034) #define 	MR_SLA_ACK 	   	0x40
(0035) #define 	MR_DATA_NOACK  	0x58
(0036) #define 	START 			0x08
(0037) #define 	MT_SLA_ACK 		0x18
(0038) #define 	MT_DATA_ACK 	0x28
(0039) #define 	RE_START 		0x10
(0040) #define 	MR_SLA_ACK 		0x40
(0041) #define 	MR_DATA_NOACK 	0x58
(0042) #define 	MR_DATA_ACK 	0x50
(0043) 
(0044) #if AD==TRUE					//条件编译指令
(0045) unsigned char Adc_Mux=0;
(0046) unsigned int Adc0_Rel=0;
(0047) unsigned int Adc1_Rel=0;
(0048) unsigned int Adc0_Catch=0;
(0049) unsigned int Adc1_Catch=0;
(0050) unsigned int Adc0_Conver[20];
(0051) unsigned int Adc1_Conver[20];
(0052) unsigned char Adc0_F;
(0053) unsigned char Adc1_F;
(0054) #endif	 	  		 		 	//条件编译结束
(0055) unsigned char Key_Number;			   	   	//全局变量:按键标志
(0056) unsigned int temprter;
(0057) #pragma data:code 
(0058) const unsigned char SMG_Conver[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
(0059) 		                        0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};
(0060) 				   							//数码管译码数组
(0061) #pragma data:data
(0062) /*******************************************************/
(0063) /******   函数名称: Scan_Key()                    ******/
(0064) /******   功    能: 键盘扫描                      ******/
(0065) /******   参    数: 无                            ******/
(0066) /******   返回值  : 按键的键值,无按键时返回null  ******/
(0067) /*******************************************************/
(0068) unsigned char Scan_Key(void)
(0069) {
(0070)  	unsigned char i;
(0071) 	PORTC=0x00;
      78 2422      CLR	R2
      79 BA25      OUT	0x15,R2
(0072) 	DDRC =0xf0;	  						//设置端口高4位输出,低四位输入
      7A EF80      LDI	R24,0xF0
      7B BB84      OUT	0x14,R24
(0073) 	PORTC=0x0f;							//低四位内部上拉
      7C E08F      LDI	R24,0xF
      7D BB85      OUT	0x15,R24
(0074) 	delay_nus(1);						//短暂延时
      7E E001      LDI	R16,1
      7F E010      LDI	R17,0
      80 DFD3      RCALL	_delay_nus
(0075) 	i=PINC&0x0f;						//读取端口电平
      81 B343      IN	R20,0x13
      82 704F      ANDI	R20,0xF
(0076) 	if(i!=0x0f)							//判断是否有键按下
      83 304F      CPI	R20,0xF
      84 F0B1      BEQ	0x009B
(0077) 	{
(0078) 	 	PORTC=0x00;
      85 2422      CLR	R2
      86 BA25      OUT	0x15,R2
(0079) 		DDRC =0x0f;						//设置端口低4位输出,高四位输入
      87 E08F      LDI	R24,0xF
      88 BB84      OUT	0x14,R24
(0080) 		PORTC=0xf0;						//高四位内部上拉
      89 EF80      LDI	R24,0xF0
      8A BB85      OUT	0x15,R24
(0081) 		delay_nus(10);					//短暂延时,去抖
      8B E00A      LDI	R16,0xA
      8C E010      LDI	R17,0
      8D DFC6      RCALL	_delay_nus
(0082) 		if((PINC&0xf0)!=0xf0)			//再次判断是否有键按下
      8E B383      IN	R24,0x13
      8F 7F80      ANDI	R24,0xF0
      90 3F80      CPI	R24,0xF0
      91 F049      BEQ	0x009B
(0083) 		{
(0084) 		 	i+=(PINC&0xf0);				//读取端口电平
      92 B383      IN	R24,0x13
      93 7F80      ANDI	R24,0xF0
      94 0F48      ADD	R20,R24
(0085) 			while((PINC&0xf0)!=0xf0);	//等待按键释放
      95 B383      IN	R24,0x13
      96 7F80      ANDI	R24,0xF0
      97 3F80      CPI	R24,0xF0
      98 F7E1      BNE	0x0095
(0086) 			return i;					//返回键值
      99 2F04      MOV	R16,R20
      9A C001      RJMP	0x009C
(0087) 		}
(0088) 	}
(0089) 	return null;   						//无按键按下返回null
      9B 2700      CLR	R16
      9C 9159      LD	R21,Y+
      9D 9149      LD	R20,Y+
      9E 9508      RET
_Key_Num:
  key                  --> R16
      9F 934A      ST	R20,-Y
      A0 935A      ST	R21,-Y
(0090) }
(0091) 
(0092) /*******************************************************/
(0093) /******   函数名称: Key_Num()                     ******/
(0094) /******   功    能: 转换键值为0-f十六进制数       ******/
(0095) /******   参    数: key--键值                     ******/
(0096) /******   返回值  : 0-f                           ******/
(0097) /*******************************************************/
(0098) unsigned char Key_Num(unsigned char key)
(0099) {
(0100)  	switch(key)
      A1 2F40      MOV	R20,R16
      A2 2755      CLR	R21
      A3 3B47      CPI	R20,0xB7
      A4 E0E0      LDI	R30,0
      A5 075E      CPC	R21,R30
      A6 F409      BNE	0x00A8
      A7 C054      RJMP	0x00FC
      A8 3B4B      CPI	R20,0xBB
      A9 E0E0      LDI	R30,0
      AA 075E      CPC	R21,R30
      AB F409      BNE	0x00AD
      AC C057      RJMP	0x0104
      AD 3B4D      CPI	R20,0xBD
      AE E0E0      LDI	R30,0
      AF 075E      CPC	R21,R30
      B0 F409      BNE	0x00B2
      B1 C05A      RJMP	0x010C
      B2 3B4E      CPI	R20,0xBE
      B3 E0E0      LDI	R30,0
      B4 075E      CPC	R21,R30
      B5 F409      BNE	0x00B7
      B6 C05D      RJMP	0x0114
      B7 EB8E      LDI	R24,0xBE
      B8 E090      LDI	R25,0
      B9 1784      CP	R24,R20
      BA 0795      CPC	R25,R21
      BB F0AC      BLT	0x00D1
      BC 3747      CPI	R20,0x77
      BD E0E0      LDI	R30,0
      BE 075E      CPC	R21,R30
      BF F409      BNE	0x00C1
      C0 C03D      RJMP	0x00FE
      C1 374B      CPI	R20,0x7B
      C2 E0E0      LDI	R30,0
      C3 075E      CPC	R21,R30
      C4 F409      BNE	0x00C6
      C5 C040      RJMP	0x0106
      C6 374D      CPI	R20,0x7D
      C7 E0E0      LDI	R30,0
      C8 075E      CPC	R21,R30
      C9 F409      BNE	0x00CB
      CA C043      RJMP	0x010E
      CB 374E      CPI	R20,0x7E
      CC E0E0      LDI	R30,0
      CD 075E      CPC	R21,R30
      CE F409      BNE	0x00D0
      CF C046      RJMP	0x0116
      D0 C047      RJMP	0x0118
      D1 3D47      CPI	R20,0xD7
      D2 E0E0      LDI	R30,0
      D3 075E      CPC	R21,R30
      D4 F129      BEQ	0x00FA
      D5 3D4B      CPI	R20,0xDB
      D6 E0E0      LDI	R30,0
      D7 075E      CPC	R21,R30
      D8 F149      BEQ	0x0102
      D9 3D4D      CPI	R20,0xDD
      DA E0E0      LDI	R30,0
      DB 075E      CPC	R21,R30
      DC F169      BEQ	0x010A
      DD 3D4E      CPI	R20,0xDE
      DE E0E0      LDI	R30,0
      DF 075E      CPC	R21,R30
      E0 F409      BNE	0x00E2
      E1 C030      RJMP	0x0112
      E2 3D47      CPI	R20,0xD7
      E3 E0E0      LDI	R30,0
      E4 075E      CPC	R21,R30
      E5 F40C      BGE	0x00E7
      E6 C031      RJMP	0x0118
      E7 3E47      CPI	R20,0xE7
      E8 E0E0      LDI	R30,0
      E9 075E      CPC	R21,R30
      EA F069      BEQ	0x00F8
      EB 3E4B      CPI	R20,0xEB
      EC E0E0      LDI	R30,0
      ED 075E      CPC	R21,R30
      EE F089      BEQ	0x0100
      EF 3E4D      CPI	R20,0xED
      F0 E0E0      LDI	R30,0
      F1 075E      CPC	R21,R30
      F2 F0A9      BEQ	0x0108
      F3 3E4E      CPI	R20,0xEE
      F4 E0E0      LDI	R30,0
      F5 075E      CPC	R21,R30
      F6 F0C9      BEQ	0x0110
      F7 C020      RJMP	0x0118
(0101) 	{
(0102) 	 	case 0xe7:return 0;	   			//按键0
      F8 2700      CLR	R16
      F9 C01F      RJMP	0x0119
(0103) 		case 0xd7:return 1;				//按键1
      FA E001      LDI	R16,1
      FB C01D      RJMP	0x0119
(0104) 		case 0xb7:return 2;				//按键2
      FC E002      LDI	R16,2
      FD C01B      RJMP	0x0119
(0105) 		case 0x77:return 3;				//按键3
      FE E003      LDI	R16,3
      FF C019      RJMP	0x0119
(0106) 		case 0xeb:return 4;				//按键4
     100 E004      LDI	R16,4

⌨️ 快捷键说明

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