📄 自恢复程序.lis
字号:
.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 + -