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

📄 洗衣机.s

📁 自己做的AVR洗衣机模型程序
💻 S
📖 第 1 页 / 共 5 页
字号:
	.dbline -2
L28:
	.dbline 0 ; func end
	xjmp pop_xgset303C
	.dbsym r Temp_data 12 i
	.dbsym r i 20 i
	.dbsym r W_bits 10 i
	.dbend
	.dbfile F:\AVR洗衣机\洗衣机主机\Sounds_and_Display.h
	.dbfunc e bell _bell fV
;            fff -> R16
	.even
_bell::
	st -y,R20
	st -y,R21
	.dbline -1
	.dbline 2
; void bell(uchar fff)
; {
	.dbline 3
; switch (fff)
	mov R20,R16
	clr R21
	cpi R20,0
	cpc R20,R21
	breq L39
X13:
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L40
X14:
	xjmp L37
L39:
	.dbline 5
;   {
;   case 0:DDR_PA3=1;_PA3=0;break;
	in R24,0x1a
	ori R24,8
	out 0x1a,R24
	.dbline 5
	in R24,0x1b
	andi R24,247
	out 0x1b,R24
	.dbline 5
	xjmp L37
L40:
	.dbline 6
;   case 1:DDR_PA3=1;_PA3=1;break;
	in R24,0x1a
	ori R24,8
	out 0x1a,R24
	.dbline 6
	in R24,0x1b
	ori R24,8
	out 0x1b,R24
	.dbline 6
	.dbline 7
;   default:break;
L37:
	.dbline -2
L35:
	.dbline 0 ; func end
	ld R21,y+
	ld R20,y+
	ret
	.dbsym r fff 16 c
	.dbend
	.dbfile F:\AVR洗衣机\洗衣机主机\key.h
	.dbfunc e Delay _Delay fV
;              i -> R20,R21
;             ms -> R16,R17
	.even
_Delay::
	st -y,R20
	st -y,R21
	.dbline -1
	.dbline 12
; /********************************************************************
; 函 数 名:Delay
; 入口参数:ms
; 出口参数:无
; 建立日期:2007年3月3日
; 修改日期:
; 函数作用:毫秒级的延时程序,当晶振为12Mhz时,xtal=12;
; 说    明:
; ********************************************************************/
; #define xtal  8
; void Delay(uint ms) 
; { 
	xjmp L43
L42:
	.dbline 15
;     uint i; 
;     while(ms--)    
;    { 
	.dbline 16
;      for(i=1;i<(uint)(xtal*143-2);i++) 
	ldi R20,1
	ldi R21,0
	xjmp L48
L45:
	.dbline 17
;          ; 
L46:
	.dbline 16
	subi R20,255  ; offset = 1
	sbci R21,255
L48:
	.dbline 16
	ldi R24,1142
	ldi R25,4
	cp R20,R24
	cpc R21,R25
	brlo L45
X15:
	.dbline 18
;    }   
L43:
	.dbline 14
	movw R2,R16
	subi R16,1
	sbci R17,0
	tst R2
	brne L42
	tst R3
	brne L42
X16:
	.dbline -2
L41:
	.dbline 0 ; func end
	ld R21,y+
	ld R20,y+
	ret
	.dbsym r i 20 i
	.dbsym r ms 16 i
	.dbend
	.dbfunc e DELAY _DELAY fV
;              i -> R20,R21
;             ms -> R16,R17
	.even
_DELAY::
	st -y,R20
	st -y,R21
	.dbline -1
	.dbline 22
; }
; 
; void DELAY(uint ms) 
; { 
	xjmp L51
L50:
	.dbline 25
;     uint i; 
;     while(ms--)    
;    { 
	.dbline 26
;      for(i=1;i<(uint)(xtal*143-2);i++) 
	ldi R20,1
	ldi R21,0
	xjmp L56
L53:
	.dbline 27
;          ; 
L54:
	.dbline 26
	subi R20,255  ; offset = 1
	sbci R21,255
L56:
	.dbline 26
	ldi R24,1142
	ldi R25,4
	cp R20,R24
	cpc R21,R25
	brlo L53
X17:
	.dbline 28
;    }   
L51:
	.dbline 24
	movw R2,R16
	subi R16,1
	sbci R17,0
	tst R2
	brne L50
	tst R3
	brne L50
X18:
	.dbline -2
L49:
	.dbline 0 ; func end
	ld R21,y+
	ld R20,y+
	ret
	.dbsym r i 20 i
	.dbsym r ms 16 i
	.dbend
	.dbfunc e key_scan _key_scan fV
	.even
_key_scan::
	.dbline -1
	.dbline 33
; }
; 
; 
; void key_scan()
; {
	.dbline 34
; DDR_PA4=1;
	in R24,0x1a
	ori R24,16
	out 0x1a,R24
	.dbline 35
; DDR_PA7=1;
	in R24,0x1a
	ori R24,128
	out 0x1a,R24
	.dbline 36
; _PA4=1;
	in R24,0x1b
	ori R24,16
	out 0x1b,R24
	.dbline 37
; _PA7=1;
	in R24,0x1b
	ori R24,128
	out 0x1b,R24
	.dbline 38
; DDR_PA4=0;
	in R24,0x1a
	andi R24,239
	out 0x1a,R24
	.dbline 39
; DDR_PA7=0;
	in R24,0x1a
	andi R24,127
	out 0x1a,R24
	.dbline 42
; 
; 	
; 	if(READ_PA4==0)
	in R24,0x19
	swap R24
	andi R24,#0x0F
	andi R24,1
	brne L58
X19:
	.dbline 43
; 		{
	.dbline 44
; 		DELAY(10);
	ldi R16,10
	ldi R17,0
	xcall _DELAY
	.dbline 45
; 		if(READ_PA4==0)
	in R24,0x19
	swap R24
	andi R24,#0x0F
	andi R24,1
	brne L60
X20:
	.dbline 46
; 			{
	.dbline 47
; 			nn++;
	lds R24,_nn
	subi R24,255    ; addi 1
	sts _nn,R24
	.dbline 48
; 			if(nn==5)
	cpi R24,5
	brne L65
X21:
	.dbline 49
; 				nn=1;
	ldi R24,1
	sts _nn,R24
L64:
	.dbline 50
; 			while(READ_PA4==0);
L65:
	.dbline 50
	in R24,0x19
	swap R24
	andi R24,#0x0F
	andi R24,1
	breq L64
X22:
	.dbline 51
; 			}
L60:
	.dbline 52
; 		}
L58:
	.dbline 53
; 	if(READ_PA7==0)
	in R24,0x19
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	andi R24,1
	brne L67
X23:
	.dbline 54
; 		{
	.dbline 55
; 		DELAY(10);
	ldi R16,10
	ldi R17,0
	xcall _DELAY
	.dbline 56
; 		if(READ_PA7==0)
	in R24,0x19
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	andi R24,1
	brne L72
X24:
	.dbline 57
; 			{
	.dbline 58
; 			flag_start=1;
	ldi R24,1
	sts _flag_start,R24
	.dbline 59
; 			}
L71:
	.dbline 60
; 			while(READ_PA7==0);
L72:
	.dbline 60
	in R24,0x19
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	andi R24,1
	breq L71
X25:
	.dbline 61
; 		}
L67:
	.dbline -2
L57:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e key2_scan _key2_scan fc
	.even
_key2_scan::
	.dbline -1
	.dbline 65
; }
; 
; char key2_scan()
; {
	.dbline 66
; DDR_PA5=1;
	in R24,0x1a
	ori R24,32
	out 0x1a,R24
	.dbline 67
; DDR_PA6=1;
	in R24,0x1a
	ori R24,64
	out 0x1a,R24
	.dbline 68
; _PA5=1;
	in R24,0x1b
	ori R24,32
	out 0x1b,R24
	.dbline 69
; _PA6=1;
	in R24,0x1b
	ori R24,64
	out 0x1b,R24
	.dbline 70
; DDR_PA5=0;
	in R24,0x1a
	andi R24,223
	out 0x1a,R24
	.dbline 71
; DDR_PA6=0;
	in R24,0x1a
	andi R24,191
	out 0x1a,R24
	.dbline 75
; 
; 
; 	
; 	if(READ_PA5==0)
	in R24,0x19
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	andi R24,1
	brne L75
X26:
	.dbline 76
; 		{
	.dbline 77
; 		DELAY(10);
	ldi R16,10
	ldi R17,0
	xcall _DELAY
	.dbline 78
; 		if(READ_PA5==0)
	in R24,0x19
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	andi R24,1
	brne L77
X27:
	.dbline 79
; 			{
	.dbline 80
; 			BBBuffer=1;
	ldi R24,1
	sts _BBBuffer,R24
L79:
	.dbline 81
; 			while(READ_PA5==0);
L80:
	.dbline 81
	in R24,0x19
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	andi R24,1
	breq L79
X28:
	.dbline 82
; 			nop();
	nop
	.dbline 83
; 			return 1;
	ldi R16,1
	xjmp L74
L77:
	.dbline 87
; 						
; 			}
; 			
; 		}
L75:
	.dbline 88
; 	if(READ_PA6==0)
	in R24,0x19
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	andi R24,1
	brne L82
X29:
	.dbline 89
; 		{
	.dbline 90
; 		DELAY(10);
	ldi R16,10
	ldi R17,0
	xcall _DELAY
	.dbline 91
; 		if(READ_PA6==0)
	in R24,0x19
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	andi R24,1
	brne L83
X30:
	.dbline 92
; 			{
	.dbline 93
; 			BBBuffer=1;
	ldi R24,1
	sts _BBBuffer,R24
L86:
	.dbline 94
; 			while(READ_PA6==0);			
L87:
	.dbline 94
	in R24,0x19
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	lsr R24
	andi R24,1
	breq L86
X31:
	.dbline 95
; 			nop();
	nop
	.dbline 96
; 			return -1;
	ldi R16,255
	xjmp L74
L82:
	.dbline 102
; 			
; 			}
; 			
; 		}
; 	else
; 	    return 0;
	clr R16
L83:
	.dbline -2
L74:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfile F:\AVR洗衣机\洗衣机主机\PWM.h
	.dbfunc e PWM_init _PWM_init fV
;             ii -> R16,R17
	.even
_PWM_init::
	.dbline -1
	.dbline 2
; void PWM_init(uint ii)
; {
	.dbline 3
;   OCR1A =19999;//50HZ方波
	ldi R24,19999
	ldi R25,78
	out 0x2b,R25
	out 0x2a,R24
	.dbline 4
;   NOP();
	nop
	.dbline 5
;   OCR1B =ii;
	out 0x29,R17
	out 0x28,R16
	.dbline 6
;   NOP();
	nop
	.dbline -2
L89:
	.dbline 0 ; func end
	ret
	.dbsym r ii 16 i
	.dbend
	.dbfunc e SET_PWMA _SET_PWMA fV
;      SPEED_BUF -> R10
	.even
_SET_PWMA::
	xcall push_xgset300C
	mov R10,R16
	.dbline -1
	.dbline 12
; //  TCCR1A = 0x23;   //快速PWM 
; //  TCCR1B = 0x1a;   //时钟8分频 匹配清零
; }
; 
; void SET_PWMA(uchar SPEED_BUF)//设置PWM占空比、频率
; {
	.dbline 13
; switch(SPEED_BUF)
	mov R20,R10
	clr R21
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L94
X32:
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L95
X33:
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L96
X34:
	xjmp L92
L94:
	.dbline 15
; 	{
; 	case 1:PWM_init(2000);NOP();break;
	ldi R16,2000
	ldi R17,7
	xcall _PWM_init
	.dbline 15
	nop
	.dbline 15
	xjmp L92
L95:
	.dbline 16
; 	case 2:PWM_init(2200);NOP();break;
	ldi R16,2200
	ldi R17,8
	xcall _PWM_init
	.dbline 16
	nop
	.dbline 16
	xjmp L92
L96:
	.dbline 17
; 	case 3:PWM_init(3000);NOP();break;
	ldi R16,3000
	ldi R17,11
	xcall _PWM_init
	.dbline 17
	nop
	.dbline 17
	.dbline 18
; 	default:break;
L92:
	.dbline -2
L90:
	.dbline 0 ; func end
	xjmp pop_xgset300C
	.dbsym r SPEED_BUF 10 c
	.dbend
	.area data(ram, con, rel)
	.dbfile F:\AVR洗衣机\洗衣机主机\PWM.h
_TX_ADDRESS::
	.blkb 2
	.area idata
	.byte 52,'C
	.area data(ram, con, rel)
	.dbfile F:\AVR洗衣机\洗衣机主机\PWM.h
	.blkb 2
	.area idata
	.byte 16,16
	.area data(ram, con, rel)
	.dbfile F:\AVR洗衣机\洗衣机主机\PWM.h
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
	.dbfile F:\AVR洗衣机\洗衣机主机\PWM.h
	.dbfile F:\AVR洗衣机\洗衣机主机\24L01_Driver.h
	.dbsym e TX_ADDRESS _TX_ADDRESS A[5:5]c
	.area text(rom, con, rel)
	.dbfile F:\AVR洗衣机\洗衣机主机\24L01_Driver.h
	.dbfunc e Uart_Init _Uart_Init fV
	.even
_Uart_Init::
	.dbline -1
	.dbline 75
; #include <iom16v.h>
; #include <macros.h>
; #include <bit.h>
; #define start 's'
; #define wat 'w'
; #define heal 'h'
; #define cyc 'c'
; 
; 
; #define rep 'r'
; 
; #define TX_ADR_WIDTH    5  
; #define TX_PLOAD_WIDTH  2 //数据缓冲区大小(2字节)
; 
; uchar TX_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01}; // Define a static TX address
; 
; 
; #define CE_0 do {PORTA&=0xFD;} while(0)
; #define CE_1 do {PORTA|=0x02;} while(0)
; 
; #define  CSN_0 do {PORTB&=0XEF;} while(0)
; #define  CSN_1 do {PORTB|=0X10;} while(0)
; 
; uchar rx_buf[TX_PLOAD_WIDTH];     //接收缓冲区
; uchar tx_buf[TX_PLOAD_WIDTH];   //发送缓冲区
; 
; uchar flag,flag1;
; uchar date;
; uchar sta;
; 
; 
; 
; char Reciv_data;
; char num_buff;//数字缓冲器
; char flagg;//数据属性标志位
; char fir_bit;
; char sec_bit;
; char i;
; 
; 
; //-----------------------------------------------------------
; //串口初始化子程序
; //-----------------------------------------------------------
; void Uart_Init(void);
; 
; //-----------------------------------------------------------
; //串口接收字节子程序
; //-----------------------------------------------------------
; unsigned char Getchar(void);
; 
; //-----------------------------------------------------------
; //串口发送字节子程序
; //-----------------------------------------------------------
; void Putchar(unsigned char c);
; 
; //-----------------------------------------------------------
; //串口发送字符串子程序
; //-----------------------------------------------------------
; void Putstr(char *s);
; 
; //-----------------------------------------------------------
; //串口发送字符串子程序(带有换行符)
; //-----------------------------------------------------------
; void Puts(char *s);
; 
; //-----------------------------------------------------------
; 
; //-----------------------------------------------------------
; //串口初始化子程序
; //字符长度:8位
; //奇偶校验:禁止
; //通讯模式:异步
; //-----------------------------------------------------------
; void Uart_Init(void)
; {	/*
	.dbline 83
;     UCSRB  =  0x00;     //disable while setting baud rate
;     UCSRA  =  0x00;     //Bit1为1则倍速发送
;     UCSRC  =  0x86;  
;     UBRRL  =  0x33;     //波特率:9600 Bps
;     UBRRH  =  0x00;     //误差率:0.156%
;     UCSRB  =  0x18;
; 	*/ 
; 	UCSRB  =  0x00;     //disable while setting baud rate
	clr R2
	out 0xa,R2
	.dbline 84
;     UCSRA  =  0x00;     //Bit1为1则倍速发送
	out 0xb,R2
	.dbline 85
;     UCSRC  =  BIT(URSEL) |0x06;  
	ldi R24,134
	out 0x20,R24
	.dbline 86
;     UBRRL  =  0x33;     //波特率:9600 Bps
	ldi R24,51
	out 0x9,R24
	.dbline 87
;     UBRRH  =  0x00;     //误差率:0.156%
	out 0x20,R2
	.dbline 88
;     UCSRB  =  0x98;
	ldi R24,152
	out 0xa,R24
	.dbline 89
; 	SEI();
	sei
	.dbline -2
L97:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Getchar _Getchar fc
	.even
_Getchar::
	.dbline -1
	.dbline 96
; }
; 
; //-----------------------------------------------------------
; //串口接收字节子程序
; //-----------------------------------------------------------
; unsigned char Getchar(void)
; {
L99:
	.dbline 97
;    while(!(UCSRA& (1<<RXC)));
L100:
	.dbline 97

⌨️ 快捷键说明

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