📄 洗衣机.lis
字号:
042C .dbline 12
042C ; // TCCR1A = 0x23; //快速PWM
042C ; // TCCR1B = 0x1a; //时钟8分频 匹配清零
042C ; }
042C ;
042C ; void SET_PWMA(uchar SPEED_BUF)//设置PWM占空比、频率
042C ; {
042C .dbline 13
042C ; switch(SPEED_BUF)
042C 4A2D mov R20,R10
042E 5527 clr R21
0430 4130 cpi R20,1
0432 E0E0 ldi R30,0
0434 5E07 cpc R21,R30
0436 49F0 breq L94
0438 X32:
0438 4230 cpi R20,2
043A E0E0 ldi R30,0
043C 5E07 cpc R21,R30
043E 51F0 breq L95
0440 X33:
0440 4330 cpi R20,3
0442 E0E0 ldi R30,0
0444 5E07 cpc R21,R30
0446 59F0 breq L96
0448 X34:
0448 0EC0 xjmp L92
044A L94:
044A .dbline 15
044A ; {
044A ; case 1:PWM_init(2000);NOP();break;
044A 00ED ldi R16,2000
044C 17E0 ldi R17,7
044E E2DF xcall _PWM_init
0450 .dbline 15
0450 0000 nop
0452 .dbline 15
0452 09C0 xjmp L92
0454 L95:
0454 .dbline 16
0454 ; case 2:PWM_init(2200);NOP();break;
0454 08E9 ldi R16,2200
0456 18E0 ldi R17,8
0458 DDDF xcall _PWM_init
045A .dbline 16
045A 0000 nop
045C .dbline 16
045C 04C0 xjmp L92
045E L96:
045E .dbline 17
045E ; case 3:PWM_init(3000);NOP();break;
045E 08EB ldi R16,3000
0460 1BE0 ldi R17,11
0462 D8DF xcall _PWM_init
0464 .dbline 17
0464 0000 nop
0466 .dbline 17
0466 .dbline 18
0466 ; default:break;
0466 L92:
0466 .dbline -2
0466 L90:
0466 .dbline 0 ; func end
0466 0C940000 xjmp pop_xgset300C
046A .dbsym r SPEED_BUF 10 c
046A .dbend
.area data(ram, con, rel)
000A .dbfile F:\AVR洗衣机\洗衣机主机\PWM.h
000A _TX_ADDRESS::
000A .blkb 2
.area idata
000A 3443 .byte 52,'C
.area data(ram, con, rel)
000C .dbfile F:\AVR洗衣机\洗衣机主机\PWM.h
000C .blkb 2
.area idata
000C 1010 .byte 16,16
.area data(ram, con, rel)
000E .dbfile F:\AVR洗衣机\洗衣机主机\PWM.h
000E .blkb 1
.area idata
000E 01 .byte 1
.area data(ram, con, rel)
000F .dbfile F:\AVR洗衣机\洗衣机主机\PWM.h
000F .dbfile F:\AVR洗衣机\洗衣机主机\24L01_Driver.h
000F .dbsym e TX_ADDRESS _TX_ADDRESS A[5:5]c
.area text(rom, con, rel)
046A .dbfile F:\AVR洗衣机\洗衣机主机\24L01_Driver.h
046A .dbfunc e Uart_Init _Uart_Init fV
.even
046A _Uart_Init::
046A .dbline -1
046A .dbline 75
046A ; #include <iom16v.h>
046A ; #include <macros.h>
046A ; #include <bit.h>
046A ; #define start 's'
046A ; #define wat 'w'
046A ; #define heal 'h'
046A ; #define cyc 'c'
046A ;
046A ;
046A ; #define rep 'r'
046A ;
046A ; #define TX_ADR_WIDTH 5
046A ; #define TX_PLOAD_WIDTH 2 //数据缓冲区大小(2字节)
046A ;
046A ; uchar TX_ADDRESS[TX_ADR_WIDTH]={0x34,0x43,0x10,0x10,0x01}; // Define a static TX address
046A ;
046A ;
046A ; #define CE_0 do {PORTA&=0xFD;} while(0)
046A ; #define CE_1 do {PORTA|=0x02;} while(0)
046A ;
046A ; #define CSN_0 do {PORTB&=0XEF;} while(0)
046A ; #define CSN_1 do {PORTB|=0X10;} while(0)
046A ;
046A ; uchar rx_buf[TX_PLOAD_WIDTH]; //接收缓冲区
046A ; uchar tx_buf[TX_PLOAD_WIDTH]; //发送缓冲区
046A ;
046A ; uchar flag,flag1;
046A ; uchar date;
046A ; uchar sta;
046A ;
046A ;
046A ;
046A ; char Reciv_data;
046A ; char num_buff;//数字缓冲器
046A ; char flagg;//数据属性标志位
046A ; char fir_bit;
046A ; char sec_bit;
046A ; char i;
046A ;
046A ;
046A ; //-----------------------------------------------------------
046A ; //串口初始化子程序
046A ; //-----------------------------------------------------------
046A ; void Uart_Init(void);
046A ;
046A ; //-----------------------------------------------------------
046A ; //串口接收字节子程序
046A ; //-----------------------------------------------------------
046A ; unsigned char Getchar(void);
046A ;
046A ; //-----------------------------------------------------------
046A ; //串口发送字节子程序
046A ; //-----------------------------------------------------------
046A ; void Putchar(unsigned char c);
046A ;
046A ; //-----------------------------------------------------------
046A ; //串口发送字符串子程序
046A ; //-----------------------------------------------------------
046A ; void Putstr(char *s);
046A ;
046A ; //-----------------------------------------------------------
046A ; //串口发送字符串子程序(带有换行符)
046A ; //-----------------------------------------------------------
046A ; void Puts(char *s);
046A ;
046A ; //-----------------------------------------------------------
046A ;
046A ; //-----------------------------------------------------------
046A ; //串口初始化子程序
046A ; //字符长度:8位
046A ; //奇偶校验:禁止
046A ; //通讯模式:异步
046A ; //-----------------------------------------------------------
046A ; void Uart_Init(void)
046A ; { /*
046A .dbline 83
046A ; UCSRB = 0x00; //disable while setting baud rate
046A ; UCSRA = 0x00; //Bit1为1则倍速发送
046A ; UCSRC = 0x86;
046A ; UBRRL = 0x33; //波特率:9600 Bps
046A ; UBRRH = 0x00; //误差率:0.156%
046A ; UCSRB = 0x18;
046A ; */
046A ; UCSRB = 0x00; //disable while setting baud rate
046A 2224 clr R2
046C 2AB8 out 0xa,R2
046E .dbline 84
046E ; UCSRA = 0x00; //Bit1为1则倍速发送
046E 2BB8 out 0xb,R2
0470 .dbline 85
0470 ; UCSRC = BIT(URSEL) |0x06;
0470 86E8 ldi R24,134
0472 80BD out 0x20,R24
0474 .dbline 86
0474 ; UBRRL = 0x33; //波特率:9600 Bps
0474 83E3 ldi R24,51
0476 89B9 out 0x9,R24
0478 .dbline 87
0478 ; UBRRH = 0x00; //误差率:0.156%
0478 20BC out 0x20,R2
047A .dbline 88
047A ; UCSRB = 0x98;
047A 88E9 ldi R24,152
047C 8AB9 out 0xa,R24
047E .dbline 89
047E ; SEI();
047E 7894 sei
0480 .dbline -2
0480 L97:
0480 .dbline 0 ; func end
0480 0895 ret
0482 .dbend
0482 .dbfunc e Getchar _Getchar fc
.even
0482 _Getchar::
0482 .dbline -1
0482 .dbline 96
0482 ; }
0482 ;
0482 ; //-----------------------------------------------------------
0482 ; //串口接收字节子程序
0482 ; //-----------------------------------------------------------
0482 ; unsigned char Getchar(void)
0482 ; {
0482 L99:
0482 .dbline 97
0482 ; while(!(UCSRA& (1<<RXC)));
0482 L100:
0482 .dbline 97
0482 5F9B sbis 0xb,7
0484 FECF rjmp L99
0486 X35:
0486 .dbline 98
0486 ; return UDR;
0486 0CB1 in R16,0xc
0488 .dbline -2
0488 L98:
0488 .dbline 0 ; func end
0488 0895 ret
048A .dbend
048A .dbfunc e Putchar _Putchar fV
048A ; c -> R16
.even
048A _Putchar::
048A .dbline -1
048A .dbline 105
048A ; }
048A ;
048A ; //-----------------------------------------------------------
048A ; //串口发送字节子程序
048A ; //-----------------------------------------------------------
048A ; void Putchar(char c)
048A ; {
048A L103:
048A .dbline 106
048A ; while (!(UCSRA&(1<<UDRE)));
048A L104:
048A .dbline 106
048A 5D9B sbis 0xb,5
048C FECF rjmp L103
048E X36:
048E .dbline 107
048E ; UDR=c;
048E 0CB9 out 0xc,R16
0490 .dbline -2
0490 L102:
0490 .dbline 0 ; func end
0490 0895 ret
0492 .dbsym r c 16 c
0492 .dbend
0492 .dbfunc e Putstr _Putstr fV
0492 ; s -> R20,R21
.even
0492 _Putstr::
0492 4A93 st -y,R20
0494 5A93 st -y,R21
0496 A801 movw R20,R16
0498 .dbline -1
0498 .dbline 114
0498 ; }
0498 ;
0498 ; //-----------------------------------------------------------
0498 ; //串口发送字符串子程序
0498 ; //-----------------------------------------------------------
0498 ; void Putstr(char *s)
0498 ; {
0498 05C0 xjmp L108
049A L107:
049A .dbline 116
049A ; while (*s)
049A ; {
049A .dbline 117
049A ; Putchar(*s);
049A FA01 movw R30,R20
049C 0081 ldd R16,z+0
049E F5DF xcall _Putchar
04A0 .dbline 118
04A0 ; s++;
04A0 4F5F subi R20,255 ; offset = 1
04A2 5F4F sbci R21,255
04A4 .dbline 119
04A4 ; }
04A4 L108:
04A4 .dbline 115
04A4 FA01 movw R30,R20
04A6 2080 ldd R2,z+0
04A8 2220 tst R2
04AA B9F7 brne L107
04AC X37:
04AC .dbline -2
04AC L106:
04AC .dbline 0 ; func end
04AC 5991 ld R21,y+
04AE 4991 ld R20,y+
04B0 0895 ret
04B2 .dbsym r s 20 pc
04B2 .dbend
04B2 .dbfunc e Puts _Puts fV
04B2 ; s -> R20,R21
.even
04B2 _Puts::
04B2 4A93 st -y,R20
04B4 5A93 st -y,R21
04B6 A801 movw R20,R16
04B8 .dbline -1
04B8 .dbline 126
04B8 ; }
04B8 ;
04B8 ; //-----------------------------------------------------------
04B8 ; //串口发送字符串子程序(带有换行符)
04B8 ; //-----------------------------------------------------------
04B8 ; void Puts(char *s)
04B8 ; {
04B8 05C0 xjmp L112
04BA L111:
04BA .dbline 128
04BA ; while (*s)
04BA ; {
04BA .dbline 129
04BA ; Putchar(*s);
04BA FA01 movw R30,R20
04BC 0081 ldd R16,z+0
04BE E5DF xcall _Putchar
04C0 .dbline 130
04C0 ; s++;
04C0 4F5F subi R20,255 ; offset = 1
04C2 5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -