📄 eeprom读写演示程序.lst
字号:
__start:
__text_start:
0251 E5CF LDI R28,0x5F
0252 E0D4 LDI R29,4
0253 BFCD OUT 0x3D,R28
0254 BFDE OUT 0x3E,R29
0255 51C0 SUBI R28,0x10
0256 40D0 SBCI R29,0
0257 EA0A LDI R16,0xAA
0258 8308 STD Y+0,R16
0259 2400 CLR R0
025A EAED LDI R30,0xAD
025B E0F0 LDI R31,0
025C E010 LDI R17,0
025D 3AEF CPI R30,0xAF
025E 07F1 CPC R31,R17
025F F011 BEQ 0x0262
0260 9201 ST R0,Z+
0261 CFFB RJMP 0x025D
0262 8300 STD Z+0,R16
0263 E5E4 LDI R30,0x54
0264 E0F4 LDI R31,4
0265 E6A0 LDI R26,0x60
0266 E0B0 LDI R27,0
0267 E014 LDI R17,4
0268 3AE1 CPI R30,0xA1
0269 07F1 CPC R31,R17
026A F021 BEQ 0x026F
026B 95C8 LPM
026C 9631 ADIW R30,1
026D 920D ST R0,X+
026E CFF9 RJMP 0x0268
026F 940E0272 CALL _main
_exit:
0271 CFFF RJMP _exit
_main:
y --> R14
x --> R22
w --> R20
n --> Y+18
w_buf --> Y+2
i --> R10
j --> R12
0272 9764 SBIW R28,0x14
FILE: E:\学习专区\AVR专区\个人创作区\AVR单片机开发平台\EEPROM读写演示程序\24CxxMain.c
(0001) /****************************************************************
(0002) 实验名称:EEPROM读写演示程序
(0003) 作者: 王晓波
(0004) 晶振:内部 8M
(0005) 接线方法:
(0006) 1.PC0,PC1分别接EEPROM的SCL,SDA
(0007) 2.PA0-PA4分别接128*64显示屏的CS,SID,CLK,PSB,BJ.
(0008) 使用说明:
(0009) 先向EEPROM写入一幅图片数据,然后从EEPROM中读取,并
(0010) 在128*64显示屏显示出来。
(0011) *****************************************************************/
(0012) #include<iom16v.h>
(0013) #include<macros.h>
(0014) #define uchar unsigned char
(0015) #define uint unsigned int
(0016) const uchar pic[64][16]={
(0017) //128*64图片
(0018) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0019) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0020) 0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE0,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0021) 0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0022) 0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
(0023) 0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
(0024) 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,
(0025) 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x79,0xC0,0x18,0x00,0x00,0x00,0x00,0x00,0x00,
(0026) 0x00,0x00,0x00,0x00,0x00,0x02,0x01,0xC0,0x38,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,
(0027) 0x00,0x00,0x00,0x00,0x00,0x04,0x06,0x00,0x0C,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
(0028) 0x00,0x00,0x00,0x00,0x00,0x0C,0x08,0x08,0x03,0x02,0x00,0x00,0x00,0x00,0x00,0x00,
(0029) 0x00,0x00,0x00,0x00,0x00,0x08,0x10,0x38,0x01,0x83,0x00,0x00,0x00,0x00,0x00,0x00,
(0030) 0x00,0x00,0x00,0x00,0x00,0x18,0x20,0x78,0x00,0xC1,0x00,0x00,0x00,0x00,0x00,0x00,
(0031) 0x00,0x00,0x00,0x00,0x00,0x10,0x40,0x78,0x00,0x41,0x80,0x00,0x00,0x00,0x00,0x00,
(0032) 0x00,0x00,0x00,0x00,0x00,0x30,0x43,0x78,0x00,0x20,0x80,0x00,0x00,0x00,0x00,0x00,
(0033) 0x00,0x00,0x00,0x00,0x00,0x20,0x8F,0x7B,0xE0,0x30,0x80,0x00,0x00,0x00,0x00,0x00,
(0034) 0x00,0x00,0x00,0x00,0x00,0x20,0x9F,0x7B,0xC0,0x10,0x40,0x00,0x00,0x00,0x00,0x00,
(0035) 0x00,0x00,0x00,0x00,0x00,0x21,0x9F,0x7B,0xDC,0x10,0x40,0x00,0x00,0x00,0x00,0x00,
(0036) 0x00,0x00,0x00,0x00,0x00,0x61,0x1F,0x7B,0xFF,0x18,0x40,0x00,0x00,0x00,0x00,0x00,
(0037) 0x00,0x00,0x00,0x00,0x00,0x41,0x1F,0x7B,0xDF,0x08,0x40,0x00,0x00,0x00,0x00,0x00,
(0038) 0x00,0x00,0x00,0x00,0x00,0x41,0x1F,0x7B,0xDF,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
(0039) 0x00,0x00,0x00,0x00,0x00,0x40,0x1F,0x7B,0xDF,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
(0040) 0x00,0x00,0x00,0x00,0x00,0x40,0x1F,0x7B,0xDF,0x08,0x40,0x00,0x00,0x00,0x00,0x00,
(0041) 0x00,0x00,0x00,0x00,0x00,0x41,0x1F,0x7B,0xDF,0x08,0x40,0x00,0x00,0x00,0x00,0x00,
(0042) 0x00,0x00,0x00,0x00,0x00,0x61,0x1F,0x7B,0xDF,0x08,0x40,0x00,0x00,0x00,0x00,0x00,
(0043) 0x00,0x00,0x00,0x00,0x00,0x61,0x1F,0x3F,0x9F,0x18,0x40,0x00,0x00,0x00,0x00,0x00,
(0044) 0x00,0x00,0x00,0x00,0x00,0x20,0x9F,0x3F,0x9F,0x10,0x40,0x00,0x00,0x00,0x00,0x00,
(0045) 0x00,0x00,0x00,0x00,0x00,0x20,0x8F,0x0F,0x1F,0x10,0xC0,0x00,0x00,0x00,0x00,0x00,
(0046) 0x00,0x00,0x00,0x00,0x00,0x30,0xCF,0x80,0x3E,0x20,0x80,0x00,0x00,0x00,0x00,0x00,
(0047) 0x00,0x00,0x00,0x00,0x00,0x10,0x47,0xC0,0x7E,0x20,0x80,0x00,0x00,0x00,0x00,0x00,
(0048) 0x00,0x00,0x00,0x00,0x00,0x10,0x23,0xE0,0xFC,0x41,0x00,0x00,0x00,0x00,0x00,0x00,
(0049) 0x00,0x00,0x00,0x00,0x00,0x18,0x30,0xFF,0xE0,0xC1,0x00,0x00,0x00,0x00,0x00,0x00,
(0050) 0x00,0x00,0x00,0x00,0x00,0x0C,0x18,0x3F,0xC1,0x82,0x00,0x00,0x00,0x00,0x00,0x00,
(0051) 0x00,0x00,0x00,0x00,0x00,0x04,0x0C,0x00,0x03,0x06,0x00,0x00,0x00,0x00,0x00,0x00,
(0052) 0x00,0x00,0x00,0x00,0x00,0x02,0x03,0x00,0x0C,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
(0053) 0x00,0x00,0x00,0x00,0x00,0x01,0x00,0xE0,0x70,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
(0054) 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x03,0xC0,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
(0055) 0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,
(0056) 0x00,0x60,0x00,0x00,0x00,0x00,0x30,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
(0057) 0x00,0x20,0x00,0x00,0x00,0x00,0x1C,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0058) 0x00,0x60,0x80,0x00,0x00,0x00,0x07,0x80,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0059) 0x00,0x41,0xC0,0x00,0x00,0x00,0x00,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0060) 0x03,0xC7,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,
(0061) 0x01,0xE7,0xC0,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0xE0,0x00,0x64,0x00,0x10,0x00,
(0062) 0x03,0xE7,0xC0,0x00,0x00,0x01,0xE0,0x00,0x00,0x03,0xE0,0x02,0x6C,0x00,0x1F,0x00,
(0063) 0x03,0xEF,0x00,0x00,0x00,0x79,0xC0,0x00,0x00,0x07,0xFE,0x03,0x08,0x01,0x3D,0x80,
(0064) 0x07,0xEF,0x00,0x00,0x00,0x79,0xC0,0x00,0x00,0x07,0xFE,0x01,0xF8,0x03,0xE0,0x80,
(0065) 0x1F,0xE7,0x80,0x29,0xC0,0x31,0xB0,0x04,0x00,0x07,0xF8,0x03,0xFE,0x07,0x80,0x80,
(0066) 0x3F,0xE5,0x80,0x3F,0xC0,0x7B,0x00,0x06,0x00,0x1F,0xF8,0x0F,0xFE,0x07,0x8E,0x80,
(0067) 0x3F,0xE5,0x81,0xFD,0x80,0x71,0x80,0x02,0x00,0xF1,0xF0,0x0F,0x98,0x0F,0x18,0x00,
(0068) 0x0B,0xC5,0x81,0x34,0x00,0xF0,0x80,0x02,0x00,0xC1,0xE0,0x1F,0xC0,0x1E,0x38,0x00,
(0069) 0x03,0xC4,0x80,0x20,0x00,0x71,0xC0,0x00,0x00,0x01,0x80,0x0A,0x80,0x0F,0x7C,0x00,
(0070) 0x03,0xC4,0x00,0x21,0x00,0x79,0xC0,0x07,0xC0,0x01,0xC0,0x00,0x80,0x0B,0x78,0x00,
(0071) 0x03,0xC4,0x00,0x01,0x00,0x71,0xC0,0x7F,0xC0,0x00,0xC0,0x00,0xC0,0x09,0x38,0x00,
(0072) 0x03,0xC4,0x00,0x01,0x00,0xF9,0xC0,0x78,0x00,0x01,0xC0,0x00,0x60,0x08,0x60,0xC0,
(0073) 0x07,0xC4,0x00,0x03,0x01,0xA0,0xC0,0x00,0x00,0x03,0xF0,0x01,0xF8,0x0C,0x40,0x60,
(0074) 0x1F,0xC4,0x00,0x02,0x01,0x00,0x00,0x00,0x00,0x03,0xF0,0x03,0xE0,0x06,0x0D,0xE0,
(0075) 0x1B,0x44,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x03,0xE0,0x06,0x07,0x80,
(0076) 0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x03,0xC0,0x00,0x00,0x00,
(0077) 0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,
(0078) 0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0079) 0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0080) 0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
(0081) 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
(0082) } ;
(0083) void main()
(0084) {
(0085) uint n=0;
0273 2400 CLR R0
0274 2411 CLR R1
0275 8A1B STD Y+19,R1
0276 8A0A STD Y+18,R0
(0086) uchar w_buf[16];
(0087) uint i,j;
(0088) uchar *w;
(0089) uint x;
(0090) uint y;
(0091) w=w_buf;
0277 01AE MOVW R20,R28
0278 5F4E SUBI R20,0xFE
0279 4F5F SBCI R21,0xFF
(0092) port_init();
027A 940E059A CALL _port_init
(0093) twi_init(); //twi初始化
027C 940E05A0 CALL _twi_init
(0094) LCMInit();
027E 940E0478 CALL _LCMInit
(0095) LCMDelay(100) ;
0280 E604 LDI R16,0x64
0281 E010 LDI R17,0
0282 940E0489 CALL _LCMDelay
(0096) LCMDisplayString(2,1,"EEPROM读写操作");
0284 E98E LDI R24,0x9E
0285 E090 LDI R25,0
0286 8399 STD Y+1,R25
0287 8388 STD Y+0,R24
0288 E021 LDI R18,1
0289 E030 LDI R19,0
028A E002 LDI R16,2
028B E010 LDI R17,0
028C 940E03F1 CALL _LCMDisplayString
(0097) LCMDisplayString(3,2,"演示程序");
028E E985 LDI R24,0x95
028F E090 LDI R25,0
0290 8399 STD Y+1,R25
0291 8388 STD Y+0,R24
0292 E022 LDI R18,2
0293 E030 LDI R19,0
0294 E003 LDI R16,3
0295 E010 LDI R17,0
0296 940E03F1 CALL _LCMDisplayString
(0098) //先向EEPROM写入数据
(0099) for (i=0;i<64;i++)
0298 24AA CLR R10
0299 24BB CLR R11
029A C063 RJMP 0x02FE
(0100) {
(0101) for (j=0;j<16;j++)
029B 24CC CLR R12
029C 24DD CLR R13
029D C017 RJMP 0x02B5
(0102) w_buf[j]=pic[i][j];
029E E100 LDI R16,0x10
029F E010 LDI R17,0
02A0 0195 MOVW R18,R10
02A1 940E0653 CALL empy16s
02A3 0118 MOVW R2,R16
02A4 E584 LDI R24,0x54
02A5 E090 LDI R25,0
02A6 0E28 ADD R2,R24
02A7 1E39 ADC R3,R25
02A8 01F6 MOVW R30,R12
02A9 0DE2 ADD R30,R2
02AA 1DF3 ADC R31,R3
02AB 91E4 LPM R30,0(Z)
02AC 01CE MOVW R24,R28
02AD 9602 ADIW R24,2
02AE 01D6 MOVW R26,R12
02AF 0FA8 ADD R26,R24
02B0 1FB9 ADC R27,R25
02B1 93EC ST R30,0(X)
02B2 01C6 MOVW R24,R12
02B3 9601 ADIW R24,1
02B4 016C MOVW R12,R24
02B5 01C6 MOVW R24,R12
02B6 3180 CPI R24,0x10
02B7 E0E0 LDI R30,0
02B8 079E CPC R25,R30
02B9 F320 BCS 0x029E
(0103) w=w_buf;
02BA 01AE MOVW R20,R28
02BB 5F4E SUBI R20,0xFE
02BC 4F5F SBCI R21,0xFF
(0104) x=i*16;
02BD E100 LDI R16,0x10
02BE E010 LDI R17,0
02BF 0195 MOVW R18,R10
02C0 940E0653 CALL empy16s
02C2 01B8 MOVW R22,R16
(0105) y=16;
02C3 E180 LDI R24,0x10
02C4 E090 LDI R25,0
02C5 017C MOVW R14,R24
(0106) wt24c(w,x,y);
02C6 82F9 STD Y+1,R15
02C7 82E8 STD Y+0,R14
02C8 019B MOVW R18,R22
02C9 018A MOVW R16,R20
02CA 940E0522 CALL _wt24c
(0107) LCMDelay(50);
02CC E302 LDI R16,0x32
02CD E010 LDI R17,0
02CE 940E0489 CALL _LCMDelay
(0108) n++;
02D0 898A LDD R24,Y+18
02D1 899B LDD R25,Y+19
02D2 9601 ADIW R24,1
02D3 8B9B STD Y+19,R25
02D4 8B8A STD Y+18,R24
(0109) LCMDisplayString(2,3,"正在写入数据:");
02D5 E887 LDI R24,0x87
02D6 E090 LDI R25,0
02D7 8399 STD Y+1,R25
02D8 8388 STD Y+0,R24
02D9 E023 LDI R18,3
02DA E030 LDI R19,0
02DB E002 LDI R16,2
02DC E010 LDI R17,0
02DD 940E03F1 CALL _LCMDisplayString
(0110) LCMDisplayString(2,4,"已完成 %");
02DF E78A LDI R24,0x7A
02E0 E090 LDI R25,0
02E1 8399 STD Y+1,R25
02E2 8388 STD Y+0,R24
02E3 E024 LDI R18,4
02E4 E030 LDI R19,0
02E5 E002 LDI R16,2
02E6 E010 LDI R17,0
02E7 940E03F1 CALL _LCMDisplayString
(0111) LCMDisplayNummber(6,4,n*100/64);
02E9 E604 LDI R16,0x64
02EA E010 LDI R17,0
02EB 892A LDD R18,Y+18
02EC 893B LDD R19,Y+19
02ED 940E0653 CALL empy16s
02EF E026 LDI R18,6
02F0 E030 LDI R19,0
02F1 940E06E3 CALL lsr16
02F3 8319 STD Y+1,R17
02F4 8308 STD Y+0,R16
02F5 E024 LDI R18,4
02F6 E030 LDI R19,0
02F7 E006 LDI R16,6
02F8 E010 LDI R17,0
02F9 940E0409 CALL _LCMDisplayNummber
02FB 01C5 MOVW R24,R10
02FC 9601 ADIW R24,1
02FD 015C MOVW R10,R24
02FE 01C5 MOVW R24,R10
02FF 3480 CPI R24,0x40
0300 E0E0 LDI R30,0
0301 079E CPC R25,R30
0302 F408 BCC 0x0304
0303 CF97 RJMP 0x029B
(0112) }
(0113) LCMDelay(500) ;
0304 EF04 LDI R16,0xF4
0305 E011 LDI R17,1
0306 940E0489 CALL _LCMDelay
(0114) LCMInit();
0308 940E0478 CALL _LCMInit
(0115) LCMDelay(100) ;
030A E604 LDI R16,0x64
030B E010 LDI R17,0
030C 940E0489 CALL _LCMDelay
(0116) LCMDisplayString(2,2,"正在读取数据:");
030E E68C LDI R24,0x6C
030F E090 LDI R25,0
0310 8399 STD Y+1,R25
0311 8388 STD Y+0,R24
0312 E022 LDI R18,2
0313 E030 LDI R19,0
0314 E002 LDI R16,2
0315 E010 LDI R17,0
0316 940E03F1 CALL _LCMDisplayString
(0117) LCMDisplayString(4,4,">");
0318 E68A LDI R24,0x6A
0319 E090 LDI R25,0
031A 8399 STD Y+1,R25
031B 8388 STD Y+0,R24
031C E024 LDI R18,4
031D E030 LDI R19,0
031E E004 LDI R16,4
031F E010 LDI R17,0
0320 940E03F1 CALL _LCMDisplayString
(0118) LCMDelay(500) ;
0322 EF04 LDI R16,0xF4
0323 E011 LDI R17,1
0324 940E0489 CALL _LCMDelay
(0119) LCMDisplayString(4,4,"> >");
0326 E686 LDI R24,0x66
0327 E090 LDI R25,0
0328 8399 STD Y+1,R25
0329 8388 STD Y+0,R24
032A E024 LDI R18,4
032B E030 LDI R19,0
032C E004 LDI R16,4
032D E010 LDI R17,0
032E 940E03F1 CALL _LCMDisplayString
(0120) LCMDelay(500) ;
0330 EF04 LDI R16,0xF4
0331 E011 LDI R17,1
0332 940E0489 CALL _LCMDelay
(0121) LCMDisplayString(4,4,"> > >");
0334 E680 LDI R24,0x60
0335 E090 LDI R25,0
0336 8399 STD Y+1,R25
0337 8388 STD Y+0,R24
0338 E024 LDI R18,4
0339 E030 LDI R19,0
033A E004 LDI R16,4
033B E010 LDI R17,0
033C 940E03F1 CALL _LCMDisplayString
(0122) LCMDelay(500) ;
033E EF04 LDI R16,0xF4
033F E011 LDI R17,1
0340 940E0489 CALL _LCMDelay
(0123) //从EEPROM中读取数据,在128*64液晶屏上显示。
(0124) LCMInit();
0342 940E0478 CALL _LCMInit
(0125) LCMDelay(100) ;
0344 E604 LDI R16,0x64
0345 E010 LDI R17,0
0346 940E0489 CALL _LCMDelay
(0126) LCMDisplayPicture(0);
0348 2700 CLR R16
0349 2711 CLR R17
034A 940E049F CALL _LCMDisplayPicture
034C 9664 ADIW R28,0x14
034D 9508 RET
_dm12864_inputbyte:
mid --> R20
i --> R22
comm --> R16
034E 940E06A5 CALL push_gset2
FILE: E:\学习专区\AVR专区\个人创作区\AVR单片机开发平台\EEPROM读写演示程序\dm12864m串行.c
(0001) /****************************************************************************************
(0002) LCM(DM12864M-带字库,ST7920控制芯片)显示程序
(0003)
(0004) 程序功能:该程序是用AVR来控制对DM12864M
(0005) 读写信号等的操作.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -