资源描述:
《单片机C语言之内部EEPROM、延时、数码管综合应用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#defineucharunsignedchar#include#include#include//定义Flash操作等待时间及允许IAP/ISP/EEPROM操作的常数//#defineENABLE_ISP0x83//系统工作时钟<12MHz时,对IAP_CONTR寄存器设置此值#defineucharunsignedchar#defineuintunsignedint#defineRdCommand0x01//定义ISP的操
2、作命令#definePrgCommand0x02#defineEraseCommand0x03#defineError1#defineOk0#defineWaitTime0x01sfrISP_DATA=0xe2;sfrISP_ADDRH=0xe3;sfrISP_ADDRL=0xe4;sfrISP_CMD=0xe5;sfrISP_TRIG=0xe6;sfrISP_CONTR=0xe7;sbitduan1=P2^6;//段选信号的锁存器控制sbitduan2=P2^7;//位选信号的锁存器控制sbitx0=P1^0;sbit
3、x1=P1^1;sbitx2=P1^2;sbitx3=P1^3;sbitx4=P1^4;sbitx5=P1^5;sbitx6=P1^6;sbitx7=P1^7;sbity0=P2^0;sbity1=P2^1;sbity2=P2^2;sbity3=P2^3;sbity4=P2^4;sbity5=P2^5;sbity6=P2^6;sbity7=P2^7;sbitset=P3^2;sbitup=P3^3;sbitdn=P3^4;sbitend=P3^5;unsignedcharcodetable[]={0xc0,0xf9,0x
4、a4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f,0xce};uchara=0,ram=1,num1,num2,num3,num4,num5,m20=1;voiddelay(uchart){ucharm,n,s;//延时函数1for(m=t;m>0;m--)for(n=10;n>0;n--)for(s=20;s>0;s--);}voiddelay1(ucharz)//延时函数2{ucharw,u,v;for(w=z;w>0;w
5、--)for(u=20;u>0;u--)for(v=200;v>0;v--);}/*打开ISP,IAP功能*/voidISP_IAP_enable(void){EA=0;ISP_CONTR=ISP_CONTR&0x18;/*0001,1000*/ISP_CONTR=ISP_CONTR
6、WaitTime;ISP_CONTR=ISP_CONTR
7、0x80;/*ISPEN=1*/}/*关闭ISP,IAP功能*/voidISP_IAP_disable(void){ISP_CONTR=ISP_CONTR&0x7f;/*ISPEN=
8、0*/ISP_TRIG=0x00;EA=1;}/*公用的触发代码*/voidISPgoon(void){ISP_IAP_enable();ISP_TRIG=0x46;ISP_TRIG=0xb9;_nop_();}/*字节读*/unsignedcharbyte_read(unsignedintbyte_addr){ISP_ADDRH=(unsignedchar)(byte_addr>>8);ISP_ADDRL=(unsignedchar)(byte_addr&0x00ff);ISP_CMD=ISP_CMD&0xf8;ISP
9、_CMD=ISP_CMD
10、RdCommand;ISPgoon();ISP_IAP_disable();return(ISP_DATA);}/*扇区擦除*/voidSectorErase(unsignedintsector_addr){unsignedintiSectorAddr;iSectorAddr=(sector_addr&0xfe00);ISP_ADDRH=(unsignedchar)(iSectorAddr>>8);ISP_ADDRL=0x00;ISP_CMD=ISP_CMD&0xf8;ISP_CMD=ISP_C
11、MD
12、EraseCommand;ISPgoon();ISP_IAP_disable();}/*字节写*/voidbyte_write(unsignedintbyte_addr,unsignedcharoriginal_data){ISP_ADDRH=(unsignedchar)(byte_addr>>8);ISP_A