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

📄 自恢复程序.lis

📁 本程序用于ATmega8不小心写错熔丝
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module _自恢复程序.c
                        .area text(rom, con, rel)
 0000                   .dbfile 自恢复程序.c
 0000                   .dbfunc e delay _delay fV
 0000           ;              a -> R16,R17
 0000           ;              b -> R18,R19
                        .even
 0000           _delay::
 0000                   .dbline -1
 0000                   .dbline 42
 0000           ; #include "iom8v.h"
 0000           ; #include "macros.h"
 0000           ; #include "stdio.h"
 0000           ; #define      FUSE_H   0xD9  
 0000           ; #define      FUSE_L   0xE1 
 0000           ; #define      ERASE_CHIP   0x80 
 0000           ; #define      WRITE_FUSE   0x40   
 0000           ; #define      READ_FUSE   0x04 
 0000           ; 
 0000           ; #define      LED_ON    PORTD|=BIT(PD0); 
 0000           ; #define      LED_OFF   PORTD&=~BIT(PD0);          
 0000           ; #define      OE         2  
 0000           ; #define      OE_H      PORTD|=BIT(PD2);  
 0000           ; #define      OE_L      PORTD&=~BIT(PD2); 
 0000           ; #define      WR         3  
 0000           ; #define      WR_H      PORTD|=BIT(PD3);  
 0000           ; #define      WR_L      PORTD&=~BIT(PD3); 
 0000           ; #define      BS1         4  
 0000           ; #define      BS1_H      PORTD|=BIT(PD4);  
 0000           ; #define      BS1_L      PORTD&=~BIT(PD4); 
 0000           ; #define      XA0         5  
 0000           ; #define      XA0_H      PORTD|=BIT(PD5);  
 0000           ; #define      XA0_L      PORTD&=~BIT(PD5); 
 0000           ; #define      XA1         6  
 0000           ; #define      XA1_H      PORTD|=BIT(PD6);   
 0000           ; #define      XA1_L      PORTD&=~BIT(PD6); 
 0000           ; #define      PAGEL      7  
 0000           ; #define      PAGEL_H      PORTD|=BIT(PD7); 
 0000           ; #define      PAGEL_L     PORTD&=~BIT(PD7);
 0000           ; 
 0000           ; #define      BS2         2   
 0000           ; #define      BS2_H      PORTC|=BIT(PC2);  
 0000           ; #define      BS2_L       PORTC&=~BIT(PC2); 
 0000           ; #define      XTAL1      3  
 0000           ; #define      XTAL1_H      PORTC|=BIT(PC3);  
 0000           ; #define      XTAL1_L      PORTC&=~BIT(PC3); 
 0000           ; #define      RDY         4  
 0000           ; #define      RESET      5  
 0000           ; #define      RESET_H     PORTC|=BIT(PC5);   
 0000           ; #define      RESET_L     PORTC&=~BIT(PC5);  
 0000           ; void delay()   
 0000           ; {
 0000                   .dbline 44
 0000           ; unsigned int a,b;
 0000           ; for(a=0;a<250;a++)
 0000 0027              clr R16
 0002 1127              clr R17
 0004 0BC0              rjmp L5
 0006           L2:
 0006                   .dbline 45
 0006           ; for(b=0;b<350;b++)
 0006 2227              clr R18
 0008 3327              clr R19
 000A 02C0              rjmp L9
 000C           L6:
 000C                   .dbline 46
 000C           L7:
 000C                   .dbline 45
 000C 2F5F              subi R18,255  ; offset = 1
 000E 3F4F              sbci R19,255
 0010           L9:
 0010                   .dbline 45
 0010 2E35              cpi R18,94
 0012 E1E0              ldi R30,1
 0014 3E07              cpc R19,R30
 0016 D0F3              brlo L6
 0018           L3:
 0018                   .dbline 44
 0018 0F5F              subi R16,255  ; offset = 1
 001A 1F4F              sbci R17,255
 001C           L5:
 001C                   .dbline 44
 001C 0A3F              cpi R16,250
 001E E0E0              ldi R30,0
 0020 1E07              cpc R17,R30
 0022 88F3              brlo L2
 0024                   .dbline -2
 0024           L1:
 0024                   .dbline 0 ; func end
 0024 0895              ret
 0026                   .dbsym r a 16 i
 0026                   .dbsym r b 18 i
 0026                   .dbend
 0026                   .dbfunc e wait _wait fV
 0026           ;              a -> R16
 0026           ;              b -> R18
                        .even
 0026           _wait::
 0026                   .dbline -1
 0026                   .dbline 49
 0026           ; ;
 0026           ; }
 0026           ; void wait()  
 0026           ; {
 0026                   .dbline 51
 0026           ; unsigned char a,b;
 0026           ; for(a=0;a<10;a++)
 0026 0027              clr R16
 0028 06C0              rjmp L14
 002A           L11:
 002A                   .dbline 52
 002A           ; for(b=0;b<10;b++)
 002A 2227              clr R18
 002C 01C0              rjmp L18
 002E           L15:
 002E                   .dbline 53
 002E           L16:
 002E                   .dbline 52
 002E 2395              inc R18
 0030           L18:
 0030                   .dbline 52
 0030 2A30              cpi R18,10
 0032 E8F3              brlo L15
 0034           L12:
 0034                   .dbline 51
 0034 0395              inc R16
 0036           L14:
 0036                   .dbline 51
 0036 0A30              cpi R16,10
 0038 C0F3              brlo L11
 003A                   .dbline -2
 003A           L10:
 003A                   .dbline 0 ; func end
 003A 0895              ret
 003C                   .dbsym r a 16 c
 003C                   .dbsym r b 18 c
 003C                   .dbend
 003C                   .dbfunc e set_data _set_data fV
 003C           ;           data -> R20
                        .even
 003C           _set_data::
 003C 00D0              rcall push_gset1
 003E 402F              mov R20,R16
 0040                   .dbline -1
 0040                   .dbline 56
 0040           ; ;
 0040           ; }
 0040           ; void set_data(char data)
 0040           ; {  
 0040                   .dbline 58
 0040           ; 
 0040           ;    XA1_L;  
 0040 9698              cbi 0x12,6
 0042                   .dbline 58
 0042                   .dbline 59
 0042           ;    XA0_H;  
 0042 959A              sbi 0x12,5
 0044                   .dbline 59
 0044                   .dbline 60
 0044           ;    PORTB=data;
 0044 48BB              out 0x18,R20
 0046                   .dbline 61
 0046           ;    XTAL1_H;  
 0046 AB9A              sbi 0x15,3
 0048                   .dbline 61
 0048                   .dbline 62
 0048           ;    wait();  
 0048 EEDF              rcall _wait
 004A                   .dbline 63
 004A           ;    XTAL1_L;  
 004A AB98              cbi 0x15,3
 004C                   .dbline 63
 004C                   .dbline 64
 004C           ;    wait();  
 004C ECDF              rcall _wait
 004E                   .dbline -2
 004E           L19:
 004E 00D0              rcall pop_gset1
 0050                   .dbline 0 ; func end
 0050 0895              ret
 0052                   .dbsym r data 20 c
 0052                   .dbend
 0052                   .dbfunc e write_puls _write_puls fV
                        .even
 0052           _write_puls::
 0052                   .dbline -1
 0052                   .dbline 67
 0052           ; }  
 0052           ; void write_puls()
 0052           ; {  
 0052                   .dbline 68
 0052           ;    WR_L;  
 0052 9398              cbi 0x12,3
 0054                   .dbline 68
 0054                   .dbline 69
 0054           ;    wait();  
 0054 E8DF              rcall _wait
 0056                   .dbline 70
 0056           ;    WR_H;  
 0056 939A              sbi 0x12,3
 0058                   .dbline 70
 0058           L21:
 0058                   .dbline 72
 0058           L22:
 0058                   .dbline 71
 0058           ;    while((PINC&0x10)==0)
 0058 9C9B              sbis 0x13,4
 005A FECF              rjmp L21
 005C                   .dbline 73
 005C           ;    ;
 005C           ;  PORTB=0; 
 005C 2224              clr R2
 005E 28BA              out 0x18,R2
 0060                   .dbline -2
 0060           L20:
 0060                   .dbline 0 ; func end
 0060 0895              ret
 0062                   .dbend
 0062                   .dbfunc e set_command _set_command fV
 0062           ;            com -> R20
                        .even
 0062           _set_command::
 0062 00D0              rcall push_gset1
 0064 402F              mov R20,R16
 0066                   .dbline -1
 0066                   .dbline 76
 0066           ; } 
 0066           ; void set_command(char com)
 0066           ; {  
 0066                   .dbline 78
 0066           ; 
 0066           ;    WR_H;  
 0066 939A              sbi 0x12,3
 0068                   .dbline 78
 0068                   .dbline 79
 0068           ;    OE_H;  
 0068 929A              sbi 0x12,2
 006A                   .dbline 79
 006A                   .dbline 80
 006A           ;    XA1_H;  
 006A 969A              sbi 0x12,6
 006C                   .dbline 80
 006C                   .dbline 81
 006C           ;    XA0_L;  
 006C 9598              cbi 0x12,5
 006E                   .dbline 81
 006E                   .dbline 82
 006E           ;    BS1_L;  
 006E 9498              cbi 0x12,4
 0070                   .dbline 82
 0070                   .dbline 83
 0070           ;    BS2_L;  
 0070 AA98              cbi 0x15,2
 0072                   .dbline 83
 0072                   .dbline 84
 0072           ;   PORTB=com;
 0072 48BB              out 0x18,R20
 0074                   .dbline 85
 0074           ;    XTAL1_H;  
 0074 AB9A              sbi 0x15,3
 0076                   .dbline 85
 0076                   .dbline 86
 0076           ;    wait();  
 0076 D7DF              rcall _wait
 0078                   .dbline 87
 0078           ;    XTAL1_L;  
 0078 AB98              cbi 0x15,3
 007A                   .dbline 87
 007A                   .dbline 88
 007A           ;    wait();  
 007A D5DF              rcall _wait
 007C                   .dbline -2
 007C           L24:
 007C 00D0              rcall pop_gset1
 007E                   .dbline 0 ; func end
 007E 0895              ret
 0080                   .dbsym r com 20 c
 0080                   .dbend
 0080                   .dbfunc e read_data _read_data fc
 0080           ;           data -> R20
                        .even
 0080           _read_data::
 0080 00D0              rcall push_gset1
 0082                   .dbline -1
 0082                   .dbline 91
 0082           ; }  
 0082           ; char read_data()
 0082           ; {  
 0082                   .dbline 93
 0082           ;    char   data;  
 0082           ;   DDRB=0x00; 
 0082 2224              clr R2

⌨️ 快捷键说明

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