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

📄 led.lst

📁 AVR开发板实验源代码LED流水灯实验源代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
    00BD E0E0      LDI	R30,0
    00BE 075E      CPC	R21,R30
    00BF F409      BNE	0x00C1
    00C0 C03D      RJMP	0x00FE
    00C1 374B      CPI	R20,0x7B
    00C2 E0E0      LDI	R30,0
    00C3 075E      CPC	R21,R30
    00C4 F409      BNE	0x00C6
    00C5 C040      RJMP	0x0106
    00C6 374D      CPI	R20,0x7D
    00C7 E0E0      LDI	R30,0
    00C8 075E      CPC	R21,R30
    00C9 F409      BNE	0x00CB
    00CA C043      RJMP	0x010E
    00CB 374E      CPI	R20,0x7E
    00CC E0E0      LDI	R30,0
    00CD 075E      CPC	R21,R30
    00CE F409      BNE	0x00D0
    00CF C046      RJMP	0x0116
    00D0 C047      RJMP	0x0118
    00D1 3D47      CPI	R20,0xD7
    00D2 E0E0      LDI	R30,0
    00D3 075E      CPC	R21,R30
    00D4 F129      BEQ	0x00FA
    00D5 3D4B      CPI	R20,0xDB
    00D6 E0E0      LDI	R30,0
    00D7 075E      CPC	R21,R30
    00D8 F149      BEQ	0x0102
    00D9 3D4D      CPI	R20,0xDD
    00DA E0E0      LDI	R30,0
    00DB 075E      CPC	R21,R30
    00DC F169      BEQ	0x010A
    00DD 3D4E      CPI	R20,0xDE
    00DE E0E0      LDI	R30,0
    00DF 075E      CPC	R21,R30
    00E0 F409      BNE	0x00E2
    00E1 C030      RJMP	0x0112
    00E2 3D47      CPI	R20,0xD7
    00E3 E0E0      LDI	R30,0
    00E4 075E      CPC	R21,R30
    00E5 F40C      BGE	0x00E7
    00E6 C031      RJMP	0x0118
    00E7 3E47      CPI	R20,0xE7
    00E8 E0E0      LDI	R30,0
    00E9 075E      CPC	R21,R30
    00EA F069      BEQ	0x00F8
    00EB 3E4B      CPI	R20,0xEB
    00EC E0E0      LDI	R30,0
    00ED 075E      CPC	R21,R30
    00EE F089      BEQ	0x0100
    00EF 3E4D      CPI	R20,0xED
    00F0 E0E0      LDI	R30,0
    00F1 075E      CPC	R21,R30
    00F2 F0A9      BEQ	0x0108
    00F3 3E4E      CPI	R20,0xEE
    00F4 E0E0      LDI	R30,0
    00F5 075E      CPC	R21,R30
    00F6 F0C9      BEQ	0x0110
    00F7 C020      RJMP	0x0118
(0158) 	{
(0159) 	 	case 0xe7:return 0;	   			//按键0
    00F8 2700      CLR	R16
    00F9 C01F      RJMP	0x0119
(0160) 		case 0xd7:return 1;				//按键1
    00FA E001      LDI	R16,1
    00FB C01D      RJMP	0x0119
(0161) 		case 0xb7:return 2;				//按键2
    00FC E002      LDI	R16,2
    00FD C01B      RJMP	0x0119
(0162) 		case 0x77:return 3;				//按键3
    00FE E003      LDI	R16,3
    00FF C019      RJMP	0x0119
(0163) 		case 0xeb:return 4;				//按键4
    0100 E004      LDI	R16,4
    0101 C017      RJMP	0x0119
(0164) 		case 0xdb:return 5;				//按键5
    0102 E005      LDI	R16,5
    0103 C015      RJMP	0x0119
(0165) 		case 0xbb:return 6;				//按键6
    0104 E006      LDI	R16,6
    0105 C013      RJMP	0x0119
(0166) 		case 0x7b:return 7;				//按键7
    0106 E007      LDI	R16,7
    0107 C011      RJMP	0x0119
(0167) 		case 0xed:return 8;				//按键8
    0108 E008      LDI	R16,0x8
    0109 C00F      RJMP	0x0119
(0168) 		case 0xdd:return 9;				//按键9
    010A E009      LDI	R16,0x9
    010B C00D      RJMP	0x0119
(0169) 		case 0xbd:return 10;			//按键A
    010C E00A      LDI	R16,0xA
    010D C00B      RJMP	0x0119
(0170) 		case 0x7d:return 11;			//按键B
    010E E00B      LDI	R16,0xB
    010F C009      RJMP	0x0119
(0171) 		case 0xee:return 12;			//按键C
    0110 E00C      LDI	R16,0xC
    0111 C007      RJMP	0x0119
(0172) 		case 0xde:return 13;			//按键D
    0112 E00D      LDI	R16,0xD
    0113 C005      RJMP	0x0119
(0173) 		case 0xbe:return 14;			//按键E
    0114 E00E      LDI	R16,0xE
    0115 C003      RJMP	0x0119
(0174) 		case 0x7e:return 15;			//按键F
    0116 E00F      LDI	R16,0xF
    0117 C001      RJMP	0x0119
(0175) 		default: return 16;				//无按键按下
    0118 E100      LDI	R16,0x10
    0119 940E025A  CALL	pop_gset1
    011B 9508      RET
_Display_One_SMG:
  data                 --> R22
  bit                  --> R20
    011C 940E0255  CALL	push_gset2
    011E 2F62      MOV	R22,R18
    011F 2F40      MOV	R20,R16
(0176) 	}
(0177) }		
(0178) /*******************************************************/
(0179) /******   函数名称: Display_One_SMG()             ******/
(0180) /******   功    能: 显示指定内容在指定位          ******/
(0181) /******   参    数: bit--位(1-8),              ******/
(0182) /******             data--显示内容(0-15,16为全灭)****/
(0183) /******   返回值  : 无                            ******/
(0184) /*******************************************************/
(0185) void Display_One_SMG(unsigned char bit,unsigned char data)
(0186) {
(0187) 	SMG=SMG_Conver[data];	  	   		//送显示数据
    0120 E584      LDI	R24,0x54
    0121 E090      LDI	R25,0
    0122 2FE6      MOV	R30,R22
    0123 27FF      CLR	R31
    0124 0FE8      ADD	R30,R24
    0125 1FF9      ADC	R31,R25
    0126 91E4      LPM	R30,0(Z)
    0127 BBE8      OUT	0x18,R30
(0188) 	Open_SMG_DATA;						//锁存数据
    0128 9ADB      SBI	0x1B,3
(0189) 	Close_SMG_DATA;					
    0129 98DB      CBI	0x1B,3
(0190) 	SMG=~BIT(bit);						//送位数据
    012A E001      LDI	R16,1
    012B 2F14      MOV	R17,R20
    012C 940E026E  CALL	lsl8
    012E 2E20      MOV	R2,R16
    012F 9420      COM	R2
    0130 BA28      OUT	0x18,R2
(0191) 	Open_SMG_BIT;						//锁存数据
    0131 9ADA      SBI	0x1B,2
(0192) 	Close_SMG_BIT;
    0132 98DA      CBI	0x1B,2
(0193) 	delay_nms(2);
    0133 E002      LDI	R16,2
    0134 E010      LDI	R17,0
    0135 DF2C      RCALL	_delay_nms
    0136 940E024C  CALL	pop_gset2
    0138 9508      RET
_Display_One_SMG_Point:
  bit                  --> R20
    0139 940E0257  CALL	push_gset1
    013B 2F40      MOV	R20,R16
(0194) }
(0195) /*******************************************************/
(0196) /******   函数名称: Display_One_SMG_Point()       ******/
(0197) /******   功    能: 显示小数点在指定位            ******/
(0198) /******   返回值  : 无                            ******/
(0199) /*******************************************************/
(0200) void Display_One_SMG_Point(unsigned char bit)
(0201) {
(0202) 	SMG=0x80;	  	   		  	   	   	//送显示数据
    013C E880      LDI	R24,0x80
    013D BB88      OUT	0x18,R24
(0203) 	Open_SMG_DATA;						//锁存数据
    013E 9ADB      SBI	0x1B,3
(0204) 	Close_SMG_DATA;					
    013F 98DB      CBI	0x1B,3
(0205) 	SMG=~BIT(bit);						//送位数据
    0140 E001      LDI	R16,1
    0141 2F14      MOV	R17,R20
    0142 940E026E  CALL	lsl8
    0144 2E20      MOV	R2,R16
    0145 9420      COM	R2
    0146 BA28      OUT	0x18,R2
(0206) 	Open_SMG_BIT;						//锁存数据
    0147 9ADA      SBI	0x1B,2
(0207) 	Close_SMG_BIT;
    0148 98DA      CBI	0x1B,2
(0208) 	delay_nms(2);
    0149 E002      LDI	R16,2
    014A E010      LDI	R17,0
    014B DF16      RCALL	_delay_nms
    014C 940E025A  CALL	pop_gset1
    014E 9508      RET
(0209) }
(0210) /*******************************************************/
(0211) /******   函数名称: En_Led()                      ******/
(0212) /******   功    能: 使能LED功能                   ******/
(0213) /******   参    数: 无                            ******/
(0214) /******   返回值  : 无                            ******/
(0215) /*******************************************************/
(0216) void En_Led(void)
(0217) {
(0218)  	DDRB=0xff;	 				//设置输出
_En_Led:
    014F EF8F      LDI	R24,0xFF
    0150 BB87      OUT	0x17,R24
(0219) 	PORTB=0xff;					//输出高电平
    0151 BB88      OUT	0x18,R24
(0220) 	Open_LED;					//打开LED功能
    0152 9ADC      SBI	0x1B,4
    0153 9508      RET
(0221) }
(0222) /*******************************************************/
(0223) /******   函数名称: Un_Led()                      ******/
(0224) /******   功    能: 关闭LED功能                   ******/
(0225) /******   参    数: 无                            ******/
(0226) /******   返回值  : 无                            ******/
(0227) /*******************************************************/
(0228) void Un_Led(void)
(0229) {
(0230)  	DDRB=0xff;	 				//设置输出
_Un_Led:
    0154 EF8F      LDI	R24,0xFF
    0155 BB87      OUT	0x17,R24
(0231) 	PORTB=0xff;					//输出高电平
    0156 BB88      OUT	0x18,R24
(0232) 	Open_LED;					//打开LED功能
    0157 9ADC      SBI	0x1B,4
(0233) 	Close_LED;					//关闭LED功能
    0158 98DC      CBI	0x1B,4
    0159 9508      RET
(0234) }
(0235) /*******************************************************/
(0236) /******   函数名称: Clear_SMG()                   ******/
(0237) /******   功    能: 关闭数码管功能                ******/
(0238) /******   参    数: 无                            ******/
(0239) /******   返回值  : 无                            ******/
(0240) /*******************************************************/
(0241) void Clear_SMG(void)
(0242) {
(0243)  	DDRB=0xff;	 				//设置输出
_Clear_SMG:
    015A EF8F      LDI	R24,0xFF
    015B BB87      OUT	0x17,R24
(0244) 	PORTB=0x00;					//输出高电平
    015C 2422      CLR	R2
    015D BA28      OUT	0x18,R2
(0245) 	Open_SMG_DATA;
    015E 9ADB      SBI	0x1B,3
(0246) 	Close_SMG_DATA;
    015F 98DB      CBI	0x1B,3
(0247) 	Open_SMG_BIT;
    0160 9ADA      SBI	0x1B,2
(0248) 	Close_SMG_BIT;
    0161 98DA      CBI	0x1B,2
    0162 9508      RET
(0249) }
(0250) /*******************************************************/
(0251) /******   函数名称: Dac_Init()                    ******/
(0252) /******   功    能: 初始化DCA                     ******/
(0253) /******   参    数: 无                            ******/
(0254) /******   返回值  : 无                            ******/
(0255) /*******************************************************/
(0256) void Dac_Init(void)
(0257) {
(0258)  	DDRA=0x80;
_Dac_Init:
    0163 E880      LDI	R24,0x80
    0164 BB8A      OUT	0x1A,R24
(0259) 	Set_CS5615;
    0165 9ADF      SBI	0x1B,7
    0166 9508      RET
(0260) }
(0261) /*******************************************************/
(0262) /******   函数名称: Spi_Init()                    ******/
(0263) /******   功    能: 初始化SPI接口                 ******/
(0264) /******   参    数: 无                            ******/
(0265) /******   返回值  : 无                            ******/
(0266) /*******************************************************/
(0267) void Spi_Init(void)
(0268) {
(0269)  	unsigned char i;
(0270) 	DDRB|=0xb0;	  	   			//MISO输入MOSI,SCK,SS输出
_Spi_Init:
  i                    --> R16
    0167 B387      IN	R24,0x17
    0168 6B80      ORI	R24,0xB0
    0169 BB87      OUT	0x17,R24
(0271) 	DDRB&=~0x40;				
    016A 98BE      CBI	0x17,6
(0272) 	PORTB|=0x40;				//MISO上拉有效
    016B 9AC6      SBI	0x18,6
(0273) 	SPSR=0x01;					//SPI允许,主机模式,高位在先,极性00,1/2系统时钟速率
    016C E081      LDI	R24,1
    016D B98E      OUT	0x0E,R24
(0274) 	SPCR=0x50;
    016E E580      LDI	R24,0x50
    016F B98D      OUT	0x0D,R24
(0275) 	i=SPSR;
    0170 B10E      IN	R16,0x0E
(0276) 	i=SPDR;						//清空SPI,和中断标志,使SPI空闲
    0171 B10F      IN	R16,0x0F
    0172 9508      RET
(0277) }
(0278) /*******************************************************/
(0279) /******   函数名称: PutSPIchar()                  ******/
(0280) /******   功    能: 用SPI发送数据                 ******/
(0281) /******   参    数: data--待发的数据              ******/
(0282) /******   返回值  : 无                            ******/
(0283) /*******************************************************/
(0284) void PutSPIchar(char data)
(0285) {
(0286)  	SPDR=data;
_PutSPIchar:
  data                 --> R16
    0173 B90F      OUT	0x0F,R16
(0287) 	while(!(SPSR&(1<<SPIF)));	//等待发送完毕
    0174 9B77      SBIS	0x0E,7
    0175 CFFE      RJMP	0x0174
    0176 9508      RET
(0288) }
(0289) /*******************************************************/
(0290) /******   函数名称: CPU_Init()                    ******/
(0291) /******   功    能: 初始化CPU端口                 ******/
(0292) /******   参    数: 无                            ******/
(0293) /******   返回值  : 无                            ******/
(0294) /*******************************************************/
(0295) void CPU_Init(void)
(0296) {
(0297)  	PORTB=0xff;
_CPU_Init:
    0177 EF8F      LDI	R24,0xFF
    0178 BB88      OUT	0x18,R24
(0298) 	DDRB=0xff;
    0179 BB87      OUT	0x17,R24
(0299) 	PORTA=0x80;				 		
    017A E880      LDI	R24,0x80
    017B BB8B      OUT	0x1B,R24
(0300) 	DDRA=0xdc;
    017C ED8C      LDI	R24,0xDC
    017D BB8A      OUT	0x1A,R24
(0301) 	DDRB=0x00;
    017E 2422      CLR	R2
    017F BA27      OUT	0x17,R2
(0302) 	PORTC=0xff;
    0180 EF8F      LDI	R24,0xFF
    0181 BB85      OUT	0x15,R24

⌨️ 快捷键说明

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