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

📄 洗衣机.lst

📁 自己做的AVR洗衣机模型程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0179) 	else					//if(RW==1)
(0180) 	{
(0181) 	 	S_ID |= 0X04;
     19F 01C5      MOVW	R24,R10
     1A0 6084      ORI	R24,4
     1A1 015C      MOVW	R10,R24
(0182) 	}
(0183) 	if(RS == 0)
     1A2 20EE      TST	R14
     1A3 F421      BNE	0x01A8
(0184) 	{
(0185) 	 	S_ID &=~ 0x02;
     1A4 01C5      MOVW	R24,R10
     1A5 7F8D      ANDI	R24,0xFD
     1A6 015C      MOVW	R10,R24
(0186) 	}
     1A7 C003      RJMP	0x01AB
(0187) 	else					//if(RS==1)
(0188) 	{
(0189) 	 	S_ID |= 0X02;
     1A8 01C5      MOVW	R24,R10
     1A9 6082      ORI	R24,2
     1AA 015C      MOVW	R10,R24
(0190) 	}
(0191) 	H_data = W_data;
     1AB 2D6C      MOV	R22,R12
     1AC 2777      CLR	R23
(0192) 	H_data &= 0xf0;			//屏蔽低4位的数据
     1AD 7F60      ANDI	R22,0xF0
     1AE 7070      ANDI	R23,0
(0193) 	L_data = W_data;	   	//xxxx0000格式
     1AF 2D4C      MOV	R20,R12
     1B0 2755      CLR	R21
(0194) 	L_data &= 0x0f;			//屏蔽高4位的数据
     1B1 704F      ANDI	R20,0xF
     1B2 7050      ANDI	R21,0
(0195) 	L_data <<= 4;			//xxxx0000格式
     1B3 0F44      LSL	R20
     1B4 1F55      ROL	R21
     1B5 0F44      LSL	R20
     1B6 1F55      ROL	R21
     1B7 0F44      LSL	R20
     1B8 1F55      ROL	R21
     1B9 0F44      LSL	R20
     1BA 1F55      ROL	R21
(0196) 	Set_CS();
     1BB 9AD0      SBI	0x1A,0
     1BC 9AD8      SBI	0x1B,0
(0197) 	Write_8bits(S_ID); 		//发送S_ID
     1BD 0185      MOVW	R16,R10
     1BE D008      RCALL	_Write_8bits
(0198) 	Write_8bits(H_data);	//发送H_data
     1BF 018B      MOVW	R16,R22
     1C0 D006      RCALL	_Write_8bits
(0199) 	Write_8bits(L_data);	//发送L_data
     1C1 018A      MOVW	R16,R20
     1C2 D004      RCALL	_Write_8bits
(0200) 	Clr_CS();	
     1C3 9AD0      SBI	0x1A,0
     1C4 98D8      CBI	0x1B,0
     1C5 940C 0AC7 JMP	pop_xgsetF0FC
_Write_8bits:
  Temp_data            --> R12
  i                    --> R20
  W_bits               --> R10
     1C7 940E 0AFF CALL	push_xgset303C
     1C9 0158      MOVW	R10,R16
(0201) }
(0202) /********************************************************************
(0203) 函 数 名:Write_8bits
(0204) 入口参数:W_bits
(0205) 出口参数:无
(0206) 建立日期:2007年3月3日
(0207) 修改日期:
(0208) 函数作用:负责串行输出8个bit位
(0209) 说    明:
(0210) ********************************************************************/
(0211) void Write_8bits(uint W_bits)
(0212) {
(0213) 	uint i,Temp_data;
(0214) 	for(i=0; i<8; i++)
     1CA 2744      CLR	R20
     1CB 2755      CLR	R21
     1CC C019      RJMP	0x01E6
(0215) 	{
(0216) 		Temp_data = W_bits;
     1CD 0165      MOVW	R12,R10
(0217) 		Temp_data <<= i;
     1CE 019A      MOVW	R18,R20
     1CF 0186      MOVW	R16,R12
     1D0 940E 0B1F CALL	lsl16
     1D2 0168      MOVW	R12,R16
(0218) 		if((Temp_data&0x80)==0)
     1D3 FD07      SBRC	R16,7
     1D4 C003      RJMP	0x01D8
(0219) 		{
(0220) 		 	Clr_SID();
     1D5 9AD1      SBI	0x1A,1
     1D6 98D9      CBI	0x1B,1
(0221) 		}
     1D7 C002      RJMP	0x01DA
(0222) 		else
(0223) 		{
(0224) 		 	Set_SID();
     1D8 9AD1      SBI	0x1A,1
     1D9 9AD9      SBI	0x1B,1
(0225) 		} 
(0226) 		nop();
     1DA 0000      NOP
(0227) 		Set_SCLK();
     1DB 9AD2      SBI	0x1A,2
     1DC 9ADA      SBI	0x1B,2
(0228) 		nop();
     1DD 0000      NOP
(0229) 		nop();
     1DE 0000      NOP
(0230) 		Clr_SCLK();
     1DF 9AD2      SBI	0x1A,2
     1E0 98DA      CBI	0x1B,2
(0231) 		nop();
     1E1 0000      NOP
(0232) 		Clr_SID();
     1E2 9AD1      SBI	0x1A,1
     1E3 98D9      CBI	0x1B,1
     1E4 5F4F      SUBI	R20,0xFF
     1E5 4F5F      SBCI	R21,0xFF
     1E6 3048      CPI	R20,0x8
     1E7 E0E0      LDI	R30,0
     1E8 075E      CPC	R21,R30
     1E9 F318      BCS	0x01CD
     1EA 940C 0B06 JMP	pop_xgset303C
_bell:
  fff                  --> R16
     1EC 934A      ST	R20,-Y
     1ED 935A      ST	R21,-Y
FILE: F:\AVR洗衣机\洗衣机主机\Sounds_and_Display.h
(0001) void bell(uchar fff)
(0002) {
(0003) switch (fff)
     1EE 2F40      MOV	R20,R16
     1EF 2755      CLR	R21
     1F0 3040      CPI	R20,0
     1F1 0745      CPC	R20,R21
     1F2 F029      BEQ	0x01F8
     1F3 3041      CPI	R20,1
     1F4 E0E0      LDI	R30,0
     1F5 075E      CPC	R21,R30
     1F6 F041      BEQ	0x01FF
     1F7 C00D      RJMP	0x0205
(0004)   {
(0005)   case 0:DDR_PA3=1;_PA3=0;break;
     1F8 B38A      IN	R24,0x1A
     1F9 6088      ORI	R24,0x8
     1FA BB8A      OUT	0x1A,R24
     1FB B38B      IN	R24,0x1B
     1FC 7F87      ANDI	R24,0xF7
     1FD BB8B      OUT	0x1B,R24
     1FE C006      RJMP	0x0205
(0006)   case 1:DDR_PA3=1;_PA3=1;break;
     1FF B38A      IN	R24,0x1A
     200 6088      ORI	R24,0x8
     201 BB8A      OUT	0x1A,R24
     202 B38B      IN	R24,0x1B
     203 6088      ORI	R24,0x8
     204 BB8B      OUT	0x1B,R24
(0007)   default:break;
     205 9159      LD	R21,Y+
     206 9149      LD	R20,Y+
     207 9508      RET
_Delay:
  i                    --> R20
  ms                   --> R16
     208 934A      ST	R20,-Y
     209 935A      ST	R21,-Y
FILE: F:\AVR洗衣机\洗衣机主机\key.h
(0001) /********************************************************************
(0002) 函 数 名:Delay
(0003) 入口参数:ms
(0004) 出口参数:无
(0005) 建立日期:2007年3月3日
(0006) 修改日期:
(0007) 函数作用:毫秒级的延时程序,当晶振为12Mhz时,xtal=12;
(0008) 说    明:
(0009) ********************************************************************/
(0010) #define xtal  8
(0011) void Delay(uint ms) 
(0012) { 
     20A C00A      RJMP	0x0215
(0013)     uint i; 
(0014)     while(ms--)    
(0015)    { 
(0016)      for(i=1;i<(uint)(xtal*143-2);i++) 
     20B E041      LDI	R20,1
     20C E050      LDI	R21,0
     20D C002      RJMP	0x0210
     20E 5F4F      SUBI	R20,0xFF
     20F 4F5F      SBCI	R21,0xFF
     210 E786      LDI	R24,0x76
     211 E094      LDI	R25,4
     212 1748      CP	R20,R24
     213 0759      CPC	R21,R25
     214 F3C8      BCS	0x020E
     215 0118      MOVW	R2,R16
     216 5001      SUBI	R16,1
     217 4010      SBCI	R17,0
     218 2022      TST	R2
     219 F789      BNE	0x020B
     21A 2033      TST	R3
     21B F779      BNE	0x020B
     21C 9159      LD	R21,Y+
     21D 9149      LD	R20,Y+
     21E 9508      RET
_DELAY:
  i                    --> R20
  ms                   --> R16
     21F 934A      ST	R20,-Y
     220 935A      ST	R21,-Y
(0017)          ; 
(0018)    }   
(0019) }
(0020) 
(0021) void DELAY(uint ms) 
(0022) { 
     221 C00A      RJMP	0x022C
(0023)     uint i; 
(0024)     while(ms--)    
(0025)    { 
(0026)      for(i=1;i<(uint)(xtal*143-2);i++) 
     222 E041      LDI	R20,1
     223 E050      LDI	R21,0
     224 C002      RJMP	0x0227
     225 5F4F      SUBI	R20,0xFF
     226 4F5F      SBCI	R21,0xFF
     227 E786      LDI	R24,0x76
     228 E094      LDI	R25,4
     229 1748      CP	R20,R24
     22A 0759      CPC	R21,R25
     22B F3C8      BCS	0x0225
     22C 0118      MOVW	R2,R16
     22D 5001      SUBI	R16,1
     22E 4010      SBCI	R17,0
     22F 2022      TST	R2
     230 F789      BNE	0x0222
     231 2033      TST	R3
     232 F779      BNE	0x0222
     233 9159      LD	R21,Y+
     234 9149      LD	R20,Y+
     235 9508      RET
(0027)          ; 
(0028)    }   
(0029) }
(0030) 
(0031) 
(0032) void key_scan()
(0033) {
(0034) DDR_PA4=1;
_key_scan:
     236 B38A      IN	R24,0x1A
     237 6180      ORI	R24,0x10
     238 BB8A      OUT	0x1A,R24
(0035) DDR_PA7=1;
     239 B38A      IN	R24,0x1A
     23A 6880      ORI	R24,0x80
     23B BB8A      OUT	0x1A,R24
(0036) _PA4=1;
     23C B38B      IN	R24,0x1B
     23D 6180      ORI	R24,0x10
     23E BB8B      OUT	0x1B,R24
(0037) _PA7=1;
     23F B38B      IN	R24,0x1B
     240 6880      ORI	R24,0x80
     241 BB8B      OUT	0x1B,R24
(0038) DDR_PA4=0;
     242 B38A      IN	R24,0x1A
     243 7E8F      ANDI	R24,0xEF
     244 BB8A      OUT	0x1A,R24
(0039) DDR_PA7=0;
     245 B38A      IN	R24,0x1A
     246 778F      ANDI	R24,0x7F
     247 BB8A      OUT	0x1A,R24
(0040) 
(0041) 	
(0042) 	if(READ_PA4==0)
     248 B389      IN	R24,0x19
     249 9582      SWAP	R24
     24A 708F      ANDI	R24,0xF
     24B 7081      ANDI	R24,1
     24C F4B9      BNE	0x0264
(0043) 		{
(0044) 		DELAY(10);
     24D E00A      LDI	R16,0xA
     24E E010      LDI	R17,0
     24F DFCF      RCALL	_DELAY
(0045) 		if(READ_PA4==0)
     250 B389      IN	R24,0x19
     251 9582      SWAP	R24
     252 708F      ANDI	R24,0xF
     253 7081      ANDI	R24,1
     254 F479      BNE	0x0264
(0046) 			{
(0047) 			nn++;
     255 9180 0065 LDS	R24,nn
     257 5F8F      SUBI	R24,0xFF
     258 9380 0065 STS	nn,R24
(0048) 			if(nn==5)
     25A 3085      CPI	R24,5
     25B F419      BNE	0x025F
(0049) 				nn=1;
     25C E081      LDI	R24,1
     25D 9380 0065 STS	nn,R24
(0050) 			while(READ_PA4==0);
     25F B389      IN	R24,0x19
     260 9582      SWAP	R24
     261 708F      ANDI	R24,0xF
     262 7081      ANDI	R24,1
     263 F3D9      BEQ	0x025F
(0051) 			}
(0052) 		}
(0053) 	if(READ_PA7==0)
     264 B389      IN	R24,0x19
     265 9586      LSR	R24
     266 9586      LSR	R24
     267 9586      LSR	R24
     268 9586      LSR	R24
     269 9586      LSR	R24
     26A 9586      LSR	R24
     26B 9586      LSR	R24
     26C 7081      ANDI	R24,1
     26D F4D1      BNE	0x0288
(0054) 		{
(0055) 		DELAY(10);
     26E E00A      LDI	R16,0xA
     26F E010      LDI	R17,0
     270 DFAE      RCALL	_DELAY
(0056) 		if(READ_PA7==0)
     271 B389      IN	R24,0x19
     272 9586      LSR	R24
     273 9586      LSR	R24
     274 9586      LSR	R24
     275 9586      LSR	R24
     276 9586      LSR	R24
     277 9586      LSR	R24
     278 9586      LSR	R24
     279 7081      ANDI	R24,1
     27A F419      BNE	0x027E
(0057) 			{
(0058) 			flag_start=1;
     27B E081      LDI	R24,1
     27C 9380 0064 STS	flag_start,R24
(0059) 			}
(0060) 			while(READ_PA7==0);
     27E B389      IN	R24,0x19
     27F 9586      LSR	R24
     280 9586      LSR	R24
     281 9586      LSR	R24
     282 9586      LSR	R24
     283 9586      LSR	R24
     284 9586      LSR	R24
     285 9586      LSR	R24
     286 7081      ANDI	R24,1
     287 F3B1      BEQ	0x027E
(0061) 		}
     288 9508      RET
(0062) }
(0063) 
(0064) char key2_scan()
(0065) {
(0066) DDR_PA5=1;
_key2_scan:
     289 B38A      IN	R24,0x1A
     28A 6280      ORI	R24,0x20
     28B BB8A      OUT	0x1A,R24
(0067) DDR_PA6=1;
     28C B38A      IN	R24,0x1A
     28D 6480      ORI	R24,0x40
     28E BB8A      OUT	0x1A,R24
(0068) _PA5=1;
     28F B38B      IN	R24,0x1B
     290 6280      ORI	R24,0x20
     291 BB8B      OUT	0x1B,R24
(0069) _PA6=1;
     292 B38B      IN	R24,0x1B
     293 6480      ORI	R24,0x40
     294 BB8B      OUT	0x1B,R24
(0070) DDR_PA5=0;
     295 B38A      IN	R24,0x1A
     296 7D8F      ANDI	R24,0xDF
     297 BB8A      OUT	0x1A,R24
(0071) DDR_PA6=0;
     298 B38A      IN	R24,0x1A
     299 7B8F      ANDI	R24,0xBF
     29A BB8A      OUT	0x1A,R24
(0072) 
(0073) 
(0074) 	
(0075) 	if(READ_PA5==0)
     29B B389      IN	R24,0x19
     29C 9586      LSR	R24
     29D 9586      LSR	R24
     29E 9586      LSR	R24
     29F 9586      LSR	R24
     2A0 9586      LSR	R24
     2A1 7081      ANDI	R24,1
     2A2 F4C9      BNE	0x02BC
(0076) 		{
(0077) 		DELAY(10);
     2A3 E00A      LDI	R16,0xA
     2A4 E010      LDI	R17,0
     2A5 DF79      RCALL	_DELAY
(0078) 		if(READ_PA5==0)
     2A6 B389      IN	R24,0x19
     2A7 9586      LSR	R24
     2A8 9586      LSR	R24
     2A9 9586      LSR	R24
     2AA 9586      LSR	R24
     2AB 9586      LSR	R24
     2AC 7081      ANDI	R24,1
     2AD F471      BNE	0x02BC
(0079) 			{
(0080) 			BBBuffer=1;
     2AE E081      LDI	R24,1
     2AF 9380 0193 STS	BBBuffer,R24
(0081) 			while(READ_PA5==0);
     2B1 B389      IN	R24,0x19
     2B2 9586      LSR	R24
     2B3 9586      LSR	R24
     2B4 9586      LSR	R24
     2B5 9586      LSR	R24

⌨️ 快捷键说明

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