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

📄 ac11-3.lis

📁 AVR学习资料
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module ac11-3.c
                        .area lit(rom, con, rel)
 0000           _SEG7::
 0000 3F06              .byte 63,6
 0002 5B4F              .byte 91,'O
 0004 666D              .byte 'f,'m
 0006 7D07              .byte 125,7
 0008 7F6F              .byte 127,'o
 000A                   .dbfile d:\MYDOCU~1\ac11-3\ac11-3.c
 000A                   .dbsym e SEG7 _SEG7 A[10:10]kc
 000A           _ACT::
 000A FEFD              .byte 254,253
 000C FBF7              .byte 251,247
 000E                   .dbsym e ACT _ACT A[4:4]kc
                        .area text(rom, con, rel)
 0000                   .dbfile d:\MYDOCU~1\ac11-3\ac11-3.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 20
 0000           ; #include <iom16v.h>                   
 0000           ; #include<eeprom.h>
 0000           ; #define uchar unsigned char
 0000           ; #define uint  unsigned int    
 0000           ; uchar const SEG7[10]={0x3f,0x06,0x5b, 
 0000           ; 0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
 0000           ; uchar const ACT[4]={0xfe,0xfd,0xfb,0xf7};
 0000           ; #define LED1_0  (PORTB=PORTB&0xfe)    
 0000           ; #define S1 (PIND&0x10)
 0000           ; #define S2 (PIND&0x20)
 0000           ; #define S3 (PIND&0x40)
 0000           ; #define S4 (PIND&0x80)
 0000           ; #define SINT0 (PIND&0x04)
 0000           ; #define SINT1 (PIND&0x08)
 0000           ; uchar dpw,dpt,write_flag,time_flag,cnt;
 0000           ; uint key_cnt,ms_cnt;          
 0000           ; uchar sec,min,set_sec,set_min;                
 0000           ; /************************************************/
 0000           ; void port_init(void)  
 0000           ; {                                             
 0000                   .dbline 21
 0000           ;  PORTA = 0xFF;                        
 0000 8FEF              ldi R24,255
 0002 8BBB              out 0x1b,R24
 0004                   .dbline 22
 0004           ;  DDRA  = 0xFF;                        
 0004 8ABB              out 0x1a,R24
 0006                   .dbline 23
 0006           ;  PORTB = 0xFF;                        
 0006 88BB              out 0x18,R24
 0008                   .dbline 24
 0008           ;  DDRB  = 0xFF;                
 0008 87BB              out 0x17,R24
 000A                   .dbline 25
 000A           ;  PORTC = 0xFF;                        
 000A 85BB              out 0x15,R24
 000C                   .dbline 26
 000C           ;  DDRC  = 0xFF;                        
 000C 84BB              out 0x14,R24
 000E                   .dbline 27
 000E           ;  PORTD = 0xFF;                        
 000E 82BB              out 0x12,R24
 0010                   .dbline 28
 0010           ;  DDRD  = 0x00;                
 0010 2224              clr R2
 0012 21BA              out 0x11,R2
 0014                   .dbline -2
 0014           L1:
 0014                   .dbline 0 ; func end
 0014 0895              ret
 0016                   .dbend
 0016                   .dbfunc e timer0_init _timer0_init fV
                        .even
 0016           _timer0_init::
 0016                   .dbline -1
 0016                   .dbline 32
 0016           ; }                                     
 0016           ; //***************************
 0016           ; void timer0_init(void)        
 0016           ; {                                                     
 0016                   .dbline 33
 0016           ; TCNT0 = 0x83;                         
 0016 83E8              ldi R24,131
 0018 82BF              out 0x32,R24
 001A                   .dbline 34
 001A           ; TCCR0 = 0x03;                         
 001A 83E0              ldi R24,3
 001C 83BF              out 0x33,R24
 001E                   .dbline 35
 001E           ; TIMSK = 0x01; 
 001E 81E0              ldi R24,1
 0020 89BF              out 0x39,R24
 0022                   .dbline -2
 0022           L2:
 0022                   .dbline 0 ; func end
 0022 0895              ret
 0024                   .dbend
 0024                   .dbfunc e init_devices _init_devices fV
                        .even
 0024           _init_devices::
 0024                   .dbline -1
 0024                   .dbline 39
 0024           ; }                                                     
 0024           ; /*********************************************/
 0024           ; void init_devices(void)               
 0024           ; {                                                     
 0024                   .dbline 40
 0024           ;  port_init();         
 0024 EDDF              xcall _port_init
 0026                   .dbline 41
 0026           ;  timer0_init();                       
 0026 F7DF              xcall _timer0_init
 0028                   .dbline 42
 0028           ;  SREG=0x80;   
 0028 80E8              ldi R24,128
 002A 8FBF              out 0x3f,R24
 002C                   .dbline -2
 002C           L3:
 002C                   .dbline 0 ; func end
 002C 0895              ret
 002E                   .dbend
                        .area vector(rom, abs)
                        .org 36
 0024 0C941700          jmp _timer0_ovf_isr
                        .area text(rom, con, rel)
 002E                   .dbfile d:\MYDOCU~1\ac11-3\ac11-3.c
 002E                   .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
                        .even
 002E           _timer0_ovf_isr::
 002E 2A92              st -y,R2
 0030 3A92              st -y,R3
 0032 0A93              st -y,R16
 0034 1A93              st -y,R17
 0036 2A93              st -y,R18
 0038 3A93              st -y,R19
 003A 8A93              st -y,R24
 003C 9A93              st -y,R25
 003E EA93              st -y,R30
 0040 FA93              st -y,R31
 0042 2FB6              in R2,0x3f
 0044 2A92              st -y,R2
 0046 0E940000          xcall push_gset1
 004A                   .dbline -1
 004A                   .dbline 47
 004A           ; }                                                     
 004A           ; //***************************
 004A           ; #pragma interrupt_handler timer0_ovf_isr:10
 004A           ; void timer0_ovf_isr(void)     
 004A           ; {                                                     
 004A                   .dbline 48
 004A           ;  TCNT0 = 0x83;                        
 004A 83E8              ldi R24,131
 004C 82BF              out 0x32,R24
 004E                   .dbline 49
 004E           ;  if(++key_cnt>300)key_cnt=0;
 004E 80910600          lds R24,_key_cnt
 0052 90910700          lds R25,_key_cnt+1
 0056 0196              adiw R24,1
 0058 1C01              movw R2,R24
 005A 30920700          sts _key_cnt+1,R3
 005E 20920600          sts _key_cnt,R2
 0062 8CE2              ldi R24,300
 0064 91E0              ldi R25,1
 0066 8215              cp R24,R2
 0068 9305              cpc R25,R3
 006A 30F4              brsh L5
 006C                   .dbline 49
 006C 2224              clr R2
 006E 3324              clr R3
 0070 30920700          sts _key_cnt+1,R3
 0074 20920600          sts _key_cnt,R2
 0078           L5:
 0078                   .dbline 50
 0078           ;  if(++cnt>7)cnt=0;    
 0078 80910800          lds R24,_cnt
 007C 8F5F              subi R24,255    ; addi 1
 007E 282E              mov R2,R24
 0080 20920800          sts _cnt,R2
 0084 87E0              ldi R24,7
 0086 8215              cp R24,R2
 0088 18F4              brsh L7
 008A                   .dbline 50
 008A 2224              clr R2
 008C 20920800          sts _cnt,R2
 0090           L7:
 0090                   .dbline 51
 0090           ;  if(++ms_cnt>999){ms_cnt=0;sec++;}
 0090 80910400          lds R24,_ms_cnt
 0094 90910500          lds R25,_ms_cnt+1
 0098 0196              adiw R24,1
 009A 1C01              movw R2,R24
 009C 30920500          sts _ms_cnt+1,R3
 00A0 20920400          sts _ms_cnt,R2
 00A4 87EE              ldi R24,999
 00A6 93E0              ldi R25,3
 00A8 8215              cp R24,R2
 00AA 9305              cpc R25,R3
 00AC 58F4              brsh L9
 00AE                   .dbline 51
 00AE                   .dbline 51
 00AE 2224              clr R2
 00B0 3324              clr R3
 00B2 30920500          sts _ms_cnt+1,R3
 00B6 20920400          sts _ms_cnt,R2
 00BA                   .dbline 51
 00BA 80910300          lds R24,_sec
 00BE 8F5F              subi R24,255    ; addi 1
 00C0 80930300          sts _sec,R24
 00C4                   .dbline 51
 00C4           L9:
 00C4                   .dbline 52
 00C4           ;  if(sec>59){min++;sec=0;}     
 00C4 8BE3              ldi R24,59
 00C6 20900300          lds R2,_sec
 00CA 8215              cp R24,R2
 00CC 40F4              brsh L11
 00CE                   .dbline 52
 00CE                   .dbline 52
 00CE 80910200          lds R24,_min
 00D2 8F5F              subi R24,255    ; addi 1
 00D4 80930200          sts _min,R24
 00D8                   .dbline 52
 00D8 2224              clr R2
 00DA 20920300          sts _sec,R2
 00DE                   .dbline 52
 00DE           L11:
 00DE                   .dbline 53
 00DE           ;  if(min>59)min=59;            
 00DE 8BE3              ldi R24,59
 00E0 20900200          lds R2,_min
 00E4 8215              cp R24,R2
 00E6 10F4              brsh L13
 00E8                   .dbline 53
 00E8 80930200          sts _min,R24
 00EC           L13:
 00EC                   .dbline 54
 00EC           ;  switch(cnt)  
 00EC 40910800          lds R20,_cnt
 00F0 5527              clr R21
 00F2 4030              cpi R20,0
 00F4 4507              cpc R20,R21
 00F6 21F1              breq L18
 00F8           X0:
 00F8 4130              cpi R20,1
 00FA E0E0              ldi R30,0
 00FC 5E07              cpc R21,R30
 00FE 09F4              brne X3
 0100 32C0              xjmp L19
 0102           X3:
 0102 4230              cpi R20,2
 0104 E0E0              ldi R30,0
 0106 5E07              cpc R21,R30
 0108 09F4              brne X4
 010A 40C0              xjmp L21
 010C           X4:
 010C 4330              cpi R20,3
 010E E0E0              ldi R30,0
 0110 5E07              cpc R21,R30
 0112 09F4              brne X5
 0114 4EC0              xjmp L23
 0116           X5:
 0116 4430              cpi R20,4
 0118 E0E0              ldi R30,0
 011A 5E07              cpc R21,R30
 011C 09F4              brne X6
 011E 5CC0              xjmp L25
 0120           X6:
 0120 4530              cpi R20,5
 0122 E0E0              ldi R30,0
 0124 5E07              cpc R21,R30
 0126 09F4              brne X7
 0128 7EC0              xjmp L29
 012A           X7:
 012A 4630              cpi R20,6
 012C E0E0              ldi R30,0
 012E 5E07              cpc R21,R30
 0130 09F4              brne X8
 0132 8CC0              xjmp L31
 0134           X8:
 0134 4730              cpi R20,7
 0136 E0E0              ldi R30,0
 0138 5E07              cpc R21,R30
 013A 09F4              brne X9
 013C 9AC0              xjmp L33
 013E           X9:
 013E BFC0              xjmp L16
 0140           X1:
 0140                   .dbline 55
 0140           ;  {
 0140           L18:
 0140                   .dbline 56
 0140           ;  case 0:PORTA=SEG7[sec%10];PORTC=ACT[0];break;
 0140 2AE0              ldi R18,10
 0142 30E0              ldi R19,0
 0144 00910300          lds R16,_sec
 0148 1127              clr R17
 014A 0E940000          xcall mod16s
 014E F801              movw R30,R16
 0150 80E0              ldi R24,<_SEG7
 0152 90E0              ldi R25,>_SEG7
 0154 E80F              add R30,R24
 0156 F91F              adc R31,R25
 0158 E491              lpm R30,Z
 015A EBBB              out 0x1b,R30
 015C                   .dbline 56

⌨️ 快捷键说明

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