单片机C语言之内部EEPROM、延时、数码管综合应用.doc_第1页
单片机C语言之内部EEPROM、延时、数码管综合应用.doc_第2页
单片机C语言之内部EEPROM、延时、数码管综合应用.doc_第3页
单片机C语言之内部EEPROM、延时、数码管综合应用.doc_第4页
单片机C语言之内部EEPROM、延时、数码管综合应用.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#include #define uchar unsigned char#include #include #include /定义Flash 操作等待时间及允许IAP/ISP/EEPROM 操作的常数/#define ENABLE_ISP 0x83 /系统工作时钟0;m-)for(n=10;n0;n-)for(s=20;s0;s-);void delay1(uchar z)/延时函数2uchar w,u,v;for(w=z;w0;w-)for(u=20;u0;u-)for(v=200;v0;v-);/*打开 ISP,IAP 功能*/void ISP_IAP_enable(void) EA = 0; ISP_CONTR = ISP_CONTR & 0x18; /* 0001,1000 */ ISP_CONTR = ISP_CONTR | WaitTime; ISP_CONTR = ISP_CONTR | 0x80; /* ISPEN=1 */*关闭 ISP,IAP 功能*/void ISP_IAP_disable(void) ISP_CONTR = ISP_CONTR & 0x7f; /* ISPEN = 0 */ ISP_TRIG = 0x00; EA = 1; /*公用的触发代码*/void ISPgoon(void) ISP_IAP_enable(); ISP_TRIG = 0x46; ISP_TRIG = 0xb9; _nop_();/* 字节读 */unsigned char byte_read(unsigned int byte_addr) ISP_ADDRH = (unsigned char)(byte_addr 8); ISP_ADDRL = (unsigned char)(byte_addr & 0x00ff); ISP_CMD = ISP_CMD & 0xf8; ISP_CMD = ISP_CMD | RdCommand; ISPgoon(); ISP_IAP_disable(); return (ISP_DATA); /* 扇区擦除 */void SectorErase(unsigned int sector_addr) unsigned int iSectorAddr; iSectorAddr = (sector_addr & 0xfe00); ISP_ADDRH = (unsigned char)(iSectorAddr 8); ISP_ADDRL = 0x00; ISP_CMD = ISP_CMD & 0xf8; ISP_CMD = ISP_CMD | EraseCommand; ISPgoon(); ISP_IAP_disable(); /* 字节写 */void byte_write(unsigned int byte_addr, unsigned char original_data) ISP_ADDRH = (unsigned char)(byte_addr 8); ISP_ADDRL = (unsigned char)(byte_addr & 0x00ff); ISP_CMD = ISP_CMD & 0xf8; ISP_CMD = ISP_CMD | PrgCommand; ISP_DATA = original_data; ISPgoon(); ISP_IAP_disable(); void display(uchar a,uchar b) /显示子程序duan1=0;duan2=1;P0=tablea;delay(2);duan1=1;duan2=0;P0=tableb;delay(2);void keyscan() /按键操作 if(m20=1)uchar a0,a1;if(end=0&m20=1) while(!end); m20=0; display(a0,a1);a0=17;a1=ram%10;if(up=0&ram1)while(!dn);ram-; if(set=0&a=1) delay1(10);if(set=0)while(!set); a=0; if(m20=0) uchar b0,b1,off; switch(ram) case 1:off=1;break; case 2:off=2;break; case 3:off=3;break; case 4:off=4;break; case 5:off=5;break; while(m20=0)if(num150) num1=20; if(num250) num2=20; if(num350) num3=20; if(num450) num4=20; if(num550) num5=20; if(set=0) delay1(10); if(set=0) while(!set);m20=1; if(end=0)delay1(10);if(end=0) while(!end);SectorErase(0x2000); byte_write(0x2000,num1);byte_write(0x2001,num2);byte_write(0x2002,num3);byte_write(0x2003,num4);byte_write(0x2004,num5);m20=1;if(off=1)display(b0,b1);b0=num1/10;b1=num1%10;if(up=0)while(!up);num1+;if(dn=0)while(!dn);num1-; if(off=2)display(b0,b1);b0=num2/10;b1=num2%10;if(up=0)while(!up);num2+;if(dn=0)while(!dn);num2-; if(off=3)display(b0,b1);b0=num3/10;b1=num3%10;if(up=0)while(!up);num3+;if(dn=0)while(!dn);num3-; if(off=4)display(b0,b1);b0=num4/10;b1=num4%10;if(up=0)while(!up);num4+;if(dn=0)while(!dn);num4-; if(off=5)display(b0,b1);b0=num5/10;b1=num5%10;if(up=0)while(!up);num5+;if(dn=0)while(!dn);num5-; void main() while(1) if(a=0) num1=byte_read(0x2000); num2=byte_read(0x2001); num3=byte_read(0x2002); num4=byte_read(0x2003); num5=byte_read(0x2004);P0=0xff; while(a=0) if(set=0&a=0) delay1(10);if(set=0)while(!set);a=1; if(x0=0) delay1(num1);y0=0;delay1(num1);y0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论