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

📄 洗衣机.lis

📁 自己做的AVR洗衣机模型程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -