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

📄 wash.lis

📁 because I can not get the download rights, so I uoload this file.This is a wash program, include a c
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module wash.c
                        .area vector(rom, abs)
                        .org 60
 003C 0C948301          jmp _timer0_100ms_isr
                        .area text(rom, con, rel)
 0000                   .dbfile C:\icc\wash\wash.c
 0000                   .dbfunc e init_devices _init_devices fV
                        .even
 0000           _init_devices::
 0000                   .dbline -1
 0000                   .dbline 21
 0000           ; // 改:不加上拉,在读时加然后去除
 0000           ; 
 0000           ; 
 0000           ; //ICC-AVR application builder : 2006-12-30 21:44:52
 0000           ; // Target : M128
 0000           ; // Crystal: 1.0000Mhz
 0000           ; 
 0000           ; #include <iom128v.h>
 0000           ; #include <macros.h>
 0000           ; #include "wash.h"
 0000           ; 
 0000           ; int   loop_cs,  loop_cs0; //Wash times num, First store with cs<3
 0000           ; int   TimeCount,  TimeCount0;         //decin Timer(100ms);
 0000           ; int k0, k_tim;                                        //Keybrd: k0 old, k_tim:press time
 0000           ; int KP;                         // Keybra value
 0000           ; int beep_num, beep_delay, beep_delay0;        //Beep Time and delay, num=num*2, if num&1 On
 0000           ; 
 0000           ; 
 0000           ; //call this routine to initialize all peripherals
 0000           ; void init_devices(void)
 0000           ; {
 0000                   .dbline 23
 0000           ;  //Init var 
 0000           ;  loop_cs=loop_cs0=TimeCount=TimeCount0=k0=k_tim=KP=beep_num=beep_delay=0;
 0000 2224              clr R2
 0002 3324              clr R3
 0004 30920300          sts _beep_delay+1,R3
 0008 20920200          sts _beep_delay,R2
 000C 30920500          sts _beep_num+1,R3
 0010 20920400          sts _beep_num,R2
 0014 30920700          sts _KP+1,R3
 0018 20920600          sts _KP,R2
 001C 30920900          sts _k_tim+1,R3
 0020 20920800          sts _k_tim,R2
 0024 30920B00          sts _k0+1,R3
 0028 20920A00          sts _k0,R2
 002C 30920D00          sts _TimeCount0+1,R3
 0030 20920C00          sts _TimeCount0,R2
 0034 30920F00          sts _TimeCount+1,R3
 0038 20920E00          sts _TimeCount,R2
 003C 30921100          sts _loop_cs0+1,R3
 0040 20921000          sts _loop_cs0,R2
 0044 30921300          sts _loop_cs+1,R3
 0048 20921200          sts _loop_cs,R2
 004C                   .dbline 25
 004C           ;  //stop errant interrupts until set up
 004C           ;  CLI(); //disable all interrupts
 004C F894              cli
 004E                   .dbline 26
 004E           ;  XDIV  = 0x00; //xtal divider
 004E 2CBE              out 0x3c,R2
 0050                   .dbline 27
 0050           ;  XMCRA = 0x00; //external memory
 0050 20926D00          sts 109,R2
 0054                   .dbline 28
 0054           ;  WDTCR=0x18;   //Watch Off
 0054 88E1              ldi R24,24
 0056 81BD              out 0x21,R24
 0058                   .dbline 29
 0058           ;  WDTCR=0;
 0058 21BC              out 0x21,R2
 005A                   .dbline 30
 005A           ;  port_init();
 005A 0DD0              xcall _port_init
 005C                   .dbline 31
 005C           ;  timer_init();
 005C 26D0              xcall _timer_init
 005E                   .dbline 33
 005E           ; 
 005E           ;  MCUCR = 0x00; //No sleep
 005E 2224              clr R2
 0060 25BE              out 0x35,R2
 0062                   .dbline 34
 0062           ;  EICRA = 0x00;  EICRB = 0x00;  EIMSK = 0x00;   //extended ext ints
 0062 20926A00          sts 106,R2
 0066                   .dbline 34
 0066 2ABE              out 0x3a,R2
 0068                   .dbline 34
 0068 29BE              out 0x39,R2
 006A                   .dbline 35
 006A           ;  TIMSK = 0x02; // OCIE0timer interrupt sources /???
 006A 82E0              ldi R24,2
 006C 87BF              out 0x37,R24
 006E                   .dbline 36
 006E           ;  ETIMSK = 0x00; //extended timer interrupt sources
 006E 20927D00          sts 125,R2
 0072                   .dbline 37
 0072           ;  SEI(); //re-enable interrupts
 0072 7894              sei
 0074                   .dbline -2
 0074           L1:
 0074                   .dbline 0 ; func end
 0074 0895              ret
 0076                   .dbend
 0076                   .dbfunc e port_init _port_init fV
                        .even
 0076           _port_init::
 0076                   .dbline -1
 0076                   .dbline 43
 0076           ;  //all peripherals are now initialized
 0076           ; }
 0076           ; 
 0076           ; 
 0076           ; void port_init(void)
 0076           ; {
 0076                   .dbline 54
 0076           ; /***** Port ***************************************************
 0076           ;  Input:
 0076           ;  PA[7..5]: In/Out time        PA[4..2]:Wait time,  PA[1,0]:CiShu
 0076           ;  PB[2,1,0]: YeMian detect                                      PB[5,4]:SW for Auto
 0076           ;  PE[5..0]: Select line, to panel switch 
 0076           ;  PF[0] :KeyRight       PF[1]:KeyLeft
 0076           ;  Output:
 0076           ;  PB[3,6]: Light                                 PB[7]:buzer
 0076           ;  PC[5..0]:to in SSR             PD[5..0]:to OFF SSR
 0076           ;  **************************************************************/
 0076           ;  PORTA = 0xFF;                 DDRA  = 0x00;          //PINA = 0x0FF;
 0076 8FEF              ldi R24,255
 0078 8BBB              out 0x1b,R24
 007A                   .dbline 54
 007A 2224              clr R2
 007C 2ABA              out 0x1a,R2
 007E                   .dbline 55
 007E           ;  PORTB = 0x37;                 DDRB  = 0xC8;          //PINB = 7;        //PB3+PB6 LIGHT
 007E 87E3              ldi R24,55
 0080 88BB              out 0x18,R24
 0082                   .dbline 55
 0082 88EC              ldi R24,200
 0084 87BB              out 0x17,R24
 0086                   .dbline 56
 0086           ;  PORTC = 0x00;                 DDRC  = 0xFF;          
 0086 25BA              out 0x15,R2
 0088                   .dbline 56
 0088 8FEF              ldi R24,255
 008A 84BB              out 0x14,R24
 008C                   .dbline 57
 008C           ;  PORTD = 0x00;                 DDRD  = 0xFF;          // Out SSR
 008C 22BA              out 0x12,R2
 008E                   .dbline 57
 008E 81BB              out 0x11,R24
 0090                   .dbline 58
 0090           ;  PORTE = 0x3F;                 DDRE  = 0x00;          //PINE=0x0FF;  //Switch for select_SWway
 0090 8FE3              ldi R24,63
 0092 83B9              out 0x3,R24
 0094                   .dbline 58
 0094 22B8              out 0x2,R2
 0096                   .dbline 59
 0096           ;  PORTF = 0x03;                 DDRF  = 0x00;          //PING=3;          //Keyboard F0 F1
 0096 83E0              ldi R24,3
 0098 80936200          sts 98,R24
 009C                   .dbline 59
 009C 20926100          sts 97,R2
 00A0                   .dbline 60
 00A0           ;  PORTG = 0x00;                 DDRG  = 0x00;
 00A0 20926500          sts 101,R2
 00A4                   .dbline 60
 00A4 20926400          sts 100,R2
 00A8                   .dbline -2
 00A8           L2:
 00A8                   .dbline 0 ; func end
 00A8 0895              ret
 00AA                   .dbend
 00AA                   .dbfunc e timer_init _timer_init fV
                        .even
 00AA           _timer_init::
 00AA                   .dbline -1
 00AA                   .dbline 66
 00AA           ; }
 00AA           ; 
 00AA           ; //IntCLK=1MHz
 00AA           ; // desired value: timer0:10Hz   timer2:1KHz
 00AA           ; void timer_init(void)
 00AA           ; {
 00AA                   .dbline 68
 00AA           ;  //Setup Timer0, Use 8bit counter
 00AA           ;  TCCR0 = 0x00;                 //stop
 00AA 2224              clr R2
 00AC 23BE              out 0x33,R2
 00AE                   .dbline 69
 00AE           ;  ASSR  = 0x00;                 //set async mode
 00AE 20BE              out 0x30,R2
 00B0                   .dbline 70
 00B0           ;  TCNT0 = 0x00; 
 00B0 22BE              out 0x32,R2
 00B2                   .dbline 71
 00B2           ;  OCR0  = 90;                   //OCN=f_0/(2*N*f_n)-1 {N=1024 O=46.8}
 00B2 8AE5              ldi R24,90
 00B4 81BF              out 0x31,R24
 00B6                   .dbline 72
 00B6           ;  TCCR0 = 0x0f;                 //0x0f;                 // start timer: div:1024 mode:OCR
 00B6 8FE0              ldi R24,15
 00B8 83BF              out 0x33,R24
 00BA                   .dbline -2
 00BA           L3:
 00BA                   .dbline 0 ; func end
 00BA 0895              ret
 00BC                   .dbend
 00BC                   .dbfunc e main _main fV
 00BC           ;              x -> R22,R23
                        .even
 00BC           _main::
 00BC                   .dbline -1
 00BC                   .dbline 76
 00BC           ; }
 00BC           ; 
 00BC           ; void main(void)
 00BC           ; {
 00BC                   .dbline 78
 00BC           ;   int x;
 00BC           ;   init_devices();
 00BC A1DF              xcall _init_devices
 00BE                   .dbline 79
 00BE           ;   Light(1);
 00BE 01E0              ldi R16,1
 00C0 10E0              ldi R17,0
 00C2 EED1              xcall _Light
 00C4                   .dbline 80
 00C4           ;   Beep(1, 5);
 00C4 25E0              ldi R18,5
 00C6 30E0              ldi R19,0
 00C8 01E0              ldi R16,1
 00CA 10E0              ldi R17,0
 00CC D7D1              xcall _Beep
 00CE 19C1              xjmp L6
 00D0           L5:
 00D0                   .dbline 82
 00D0           ;   
 00D0           ;   while (1) {
 00D0                   .dbline 83
 00D0           ;        if (loop_cs != 0) {
 00D0 20901200          lds R2,_loop_cs
 00D4 30901300          lds R3,_loop_cs+1
 00D8 2220              tst R2
 00DA 19F4              brne X0
 00DC 3320              tst R3
 00DE 09F4              brne X10
 00E0 68C0              xjmp L8
 00E2           X10:
 00E2           X0:
 00E2                   .dbline 83
 00E2                   .dbline 84
 00E2           ;            if (TimeCount==0) {
 00E2 20900E00          lds R2,_TimeCount
 00E6 30900F00          lds R3,_TimeCount+1
 00EA 2220              tst R2
 00EC 09F0              breq X11
 00EE 61C0              xjmp L10
 00F0           X11:
 00F0 3320              tst R3
 00F2 09F0              breq X12
 00F4 5EC0              xjmp L10
 00F6           X12:
 00F6           X1:
 00F6                   .dbline 84
 00F6                   .dbline 85
 00F6           ;                        switchway = (~PINE) & 0x7e;
 00F6 81B1              in R24,0x1
 00F8 8095              com R24
 00FA 8E77              andi R24,126
 00FC 80931400          sts _switchway,R24
 0100                   .dbline 86
 0100           ;                        loop_cs--;
 0100 80911200          lds R24,_loop_cs
 0104 90911300          lds R25,_loop_cs+1
 0108 0197              sbiw R24,1
 010A 90931300          sts _loop_cs+1,R25
 010E 80931200          sts _loop_cs,R24
 0112                   .dbline 87
 0112 AC01              movw R20,R24
 0114 4370              andi R20,3
 0116 5070              andi R21,0
 0118 4030              cpi R20,0
 011A 4507              cpc R20,R21
 011C 81F1              breq L18
 011E           X2:
 011E 4130              cpi R20,1
 0120 E0E0              ldi R30,0
 0122 5E07              cpc R21,R30
 0124 01F1              breq L17
 0126 4230              cpi R20,2
 0128 E0E0              ldi R30,0
 012A 5E07              cpc R21,R30
 012C 89F0              breq L16
 012E 4330              cpi R20,3
 0130 E0E0              ldi R30,0
 0132 5E07              cpc R21,R30
 0134 09F0              breq L15
 0136 3DC0              xjmp L12
 0138           X3:
 0138                   .dbline 87
 0138           ;                        switch (loop_cs & 3) {
 0138           L15:
 0138                   .dbline 89
 0138           ;                           case 3: 
 0138           ;                                        AddOn;                                 
 0138 80911400          lds R24,_switchway
 013C 8170              andi R24,1
 013E 82BB              out 0x12,R24
 0140                   .dbline 89
 0140                   .dbline 90
 0140           ;                                        TimeCount=ReadPara(0); 
 0140 0027              clr R16
 0142 1127              clr R17
 0144 BBD1              xcall _ReadPara
 0146 10930F00          sts _TimeCount+1,R17
 014A 00930E00          sts _TimeCount,R16
 014E                   .dbline 91
 014E           ;                                        break;
 014E 31C0              xjmp L13
 0150           L16:
 0150                   .dbline 93
 0150           ;                               case 2: 
 0150           ;                                        AddOff; DecOff;        
 0150 2224              clr R2
 0152 22BA              out 0x12,R2
 0154                   .dbline 93
 0154                   .dbline 93
 0154 22BA              out 0x12,R2
 0156                   .dbline 93
 0156                   .dbline 94
 0156           ;                                        TimeCount=ReadPara(1); 
 0156 01E0              ldi R16,1
 0158 10E0              ldi R17,0
 015A B0D1              xcall _ReadPara
 015C 10930F00          sts _TimeCount+1,R17
 0160 00930E00          sts _TimeCount,R16
 0164                   .dbline 95
 0164           ;                                        break;
 0164 26C0              xjmp L13
 0166           L17:
 0166                   .dbline 97
 0166           ;                       case 1: 
 0166           ;                                        DecOn;                                 
 0166 80911400          lds R24,_switchway
 016A 8078              andi R24,128
 016C 82BB              out 0x12,R24
 016E                   .dbline 97
 016E                   .dbline 98
 016E           ;                                        TimeCount=ReadPara(0); 
 016E 0027              clr R16
 0170 1127              clr R17
 0172 A4D1              xcall _ReadPara
 0174 10930F00          sts _TimeCount+1,R17
 0178 00930E00          sts _TimeCount,R16
 017C                   .dbline 99
 017C           ;                                        break;
 017C 1AC0              xjmp L13
 017E           L18:
 017E                   .dbline 101
 017E           ;                       case 0: 
 017E           ;                                        AddOff; DecOff;                
 017E 2224              clr R2
 0180 22BA              out 0x12,R2
 0182                   .dbline 101
 0182                   .dbline 101
 0182 22BA              out 0x12,R2
 0184                   .dbline 101
 0184                   .dbline 102
 0184           ;                                        TimeCount=ReadPara(3);
 0184 03E0              ldi R16,3
 0186 10E0              ldi R17,0
 0188 99D1              xcall _ReadPara
 018A 10930F00          sts _TimeCount+1,R17
 018E 00930E00          sts _TimeCount,R16
 0192                   .dbline 103
 0192           ;                                        if (loop_cs==0) {
 0192 20901200          lds R2,_loop_cs
 0196 30901300          lds R3,_loop_cs+1
 019A 2220              tst R2
 019C 51F4              brne L13
 019E 3320              tst R3
 01A0 41F4              brne L13
 01A2           X4:
 01A2                   .dbline 103
 01A2                   .dbline 104
 01A2           ;                                               Beep(10, 10);
 01A2 2AE0              ldi R18,10
 01A4 30E0              ldi R19,0

⌨️ 快捷键说明

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