📄 m16_eeprom.lis
字号:
.module M16_EEPROM.C
.area data(ram, con, rel)
0000 _Table::
0000 .blkb 2
.area idata
0000 3F06 .byte 63,6
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 5B4F .byte 91,'O
.area data(ram, con, rel)
0004 .blkb 2
.area idata
0004 666D .byte 'f,'m
.area data(ram, con, rel)
0006 .blkb 2
.area idata
0006 7D07 .byte 125,7
.area data(ram, con, rel)
0008 .blkb 2
.area idata
0008 7F6F .byte 127,'o
.area data(ram, con, rel)
000A .blkb 2
.area idata
000A 777C .byte 'w,124
.area data(ram, con, rel)
000C .blkb 2
.area idata
000C 395E .byte 57,94
.area data(ram, con, rel)
000E .blkb 2
.area idata
000E 7971 .byte 'y,'q
.area data(ram, con, rel)
0010 .dbfile F:\myavr\temp\M16_EEPROM\M16_EEPROM.C
0010 .dbsym e Table _Table A[16:16]c
.area text(rom, con, rel)
0000 .dbfile F:\myavr\temp\M16_EEPROM\M16_EEPROM.C
0000 .dbfunc e DelayMs _DelayMs fV
0000 ; j -> R20,R21
0000 ; i -> R16,R17
.even
0000 _DelayMs::
0000 0E940000 xcall push_gset1
0004 .dbline -1
0004 .dbline 15
0004 ; //***************FileName:Capature.C***************//
0004 ; //***************ICCAVR V6.30编译*****************//
0004 ;
0004 ; #include <iom16v.h>
0004 ; #define uchar unsigned char
0004 ; #define uint unsigned int
0004 ;
0004 ; //数码管字型表,对应0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F//
0004 ; uchar Table[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0004 ; 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
0004 ; uchar Read_Data[4]; //定义读出数据
0004 ; uchar *p1;
0004 ;
0004 ; void DelayMs(uint i) //Ms级延时,参数i为延时时间
0004 ; {uint j;
0004 .dbline 16
0004 ; for(;i!=0;i--)
0004 0AC0 xjmp L5
0006 L2:
0006 .dbline 17
0006 .dbline 17
0006 4AEF ldi R20,250
0008 50E0 ldi R21,0
000A 02C0 xjmp L9
000C L6:
000C .dbline 17
000C .dbline 17
000C .dbline 17
000C L7:
000C .dbline 17
000C 4150 subi R20,1
000E 5040 sbci R21,0
0010 L9:
0010 .dbline 17
0010 4030 cpi R20,0
0012 4507 cpc R20,R21
0014 D9F7 brne L6
0016 X0:
0016 .dbline 17
0016 L3:
0016 .dbline 16
0016 0150 subi R16,1
0018 1040 sbci R17,0
001A L5:
001A .dbline 16
001A 0030 cpi R16,0
001C 0107 cpc R16,R17
001E 99F7 brne L2
0020 X1:
0020 .dbline -2
0020 .dbline 18
0020 ; {for(j=250;j!=0;j--) {;}}
0020 ; }
0020 L1:
0020 0E940000 xcall pop_gset1
0024 .dbline 0 ; func end
0024 0895 ret
0026 .dbsym r j 20 i
0026 .dbsym r i 16 i
0026 .dbend
0026 .dbfunc e Display _Display fV
0026 ; sel -> R20
0026 ; i -> R22
0026 ; p -> R10,R11
.even
0026 _Display::
0026 0E940000 xcall push_gset3
002A 5801 movw R10,R16
002C .dbline -1
002C .dbline 21
002C ;
002C ; void Display(uchar *p) //动态显示函数,参数p为待显示的数组名
002C ; {uchar i,sel=0x01;
002C .dbline 21
002C 41E0 ldi R20,1
002E .dbline 22
002E ; for(i=0;i<4;i++)
002E 6627 clr R22
0030 17C0 xjmp L14
0032 L11:
0032 .dbline 23
0032 .dbline 23
0032 45BB out 0x15,R20
0034 .dbline 24
0034 E62F mov R30,R22
0036 FF27 clr R31
0038 EA0D add R30,R10
003A FB1D adc R31,R11
003C E081 ldd R30,z+0
003E FF27 clr R31
0040 80E0 ldi R24,<_Table
0042 90E0 ldi R25,>_Table
0044 E80F add R30,R24
0046 F91F adc R31,R25
0048 2080 ldd R2,z+0
004A 3324 clr R3
004C 8FEF ldi R24,255
004E 90E0 ldi R25,0
0050 8219 sub R24,R2
0052 9309 sbc R25,R3
0054 8BBB out 0x1b,R24
0056 .dbline 25
0056 02E0 ldi R16,2
0058 10E0 ldi R17,0
005A D2DF xcall _DelayMs
005C .dbline 26
005C 440F lsl R20
005E .dbline 27
005E L12:
005E .dbline 22
005E 6395 inc R22
0060 L14:
0060 .dbline 22
0060 6430 cpi R22,4
0062 38F3 brlo L11
0064 .dbline -2
0064 .dbline 28
0064 ; {PORTC=sel; //选通最右边的数码管
0064 ; PORTA=0xff-Table[p[i]]; //送字型码
0064 ; DelayMs(2); //显示延时
0064 ; sel=sel<<1; //移位以显示前一位
0064 ; }
0064 ; }
0064 L10:
0064 0E940000 xcall pop_gset3
0068 .dbline 0 ; func end
0068 0895 ret
006A .dbsym r sel 20 c
006A .dbsym r i 22 c
006A .dbsym r p 10 pc
006A .dbend
006A .dbfunc e Init_IO _Init_IO fV
.even
006A _Init_IO::
006A .dbline -1
006A .dbline 31
006A ;
006A ; void Init_IO(void) //初始化I/O口
006A ; {DDRA=0xff; //设置A口为推挽1输出
006A .dbline 31
006A 8FEF ldi R24,255
006C 8ABB out 0x1a,R24
006E .dbline 32
006E ; PORTA=0xff;
006E 8BBB out 0x1b,R24
0070 .dbline 33
0070 ; DDRC=0xff; //设置C口为推挽1输出
0070 84BB out 0x14,R24
0072 .dbline 34
0072 ; PORTC=0xff;
0072 85BB out 0x15,R24
0074 .dbline -2
0074 .dbline 35
0074 ; }
0074 L15:
0074 .dbline 0 ; func end
0074 0895 ret
0076 .dbend
0076 .dbfunc e Write_EEPROM _Write_EEPROM fV
0076 ; Address -> R22,R23
0076 ; Data -> R20
.even
0076 _Write_EEPROM::
0076 0E940000 xcall push_gset2
007A B901 movw R22,R18
007C 402F mov R20,R16
007E .dbline -1
007E .dbline 38
007E ;
007E ; void Write_EEPROM(uchar Data,uint Address)
007E ; {if(EECR&0x20) DelayMs(4);
007E .dbline 38
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -