资源描述:
《数显电子密码锁》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#include#include#defineucharunsignedchar#defineuintunsignedintuchara1=14,b1=14,c1=14,d1=14,e1=14,f1=14,mx1,mx2,mx3,mx4,mx5,mx6;ucharwei,key,queding,esc,change,flag,flag1,flag2,T;ucharx,m1=0,m2=0,m3=0,m4=0,m5=0,m6=0;ucharn1=16,n2=16,n3=16,n4=16,n5=16,n6=16;sbitled=P3^3;sbitbee
2、p=P3^7;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x89,0x86,0xc7,0xc8,0xbf,0xc1,0xf6};//H,E,L,N,-,Uucharcodetable1[]={0xfe,0xbf,0xfb,0xf7,0xef,0xdf};#defineWaitTime0x01//定义CPU等待时间sfrISP_DATA=0xe2;//ISP/IAP数据寄存器声明sfrISP_ADDRH=0xe3;//ISP/IAP高字节地址寄存器sfrISP_ADDRL=0xe4;//ISP/
3、IAP低字节地址寄存器sfrISP_CMD=0xe5;//ISP/IAP命令模式寄存器sfrISP_TRIG=0xe6;//ISP/IAP命令触发寄存器sfrISP_CONTR=0xe7;//ISP/IAP控制寄存器#defineRdCommand0x01#definePrgCommand0x02#defineEraseCommand0x03#defineWaitTime0x01/*================打开ISP,IAP功能=================*/voidISP_IAP_enable(){EA=0;/*关中断*/ISP_CONTR=ISP_CONTR&0x18
4、;/*0001,1000*/ISP_CONTR=ISP_CONTR
5、WaitTime;/*写入硬件延时*/ISP_CONTR=ISP_CONTR
6、0x80;/*ISPEN=1*/}/*===============关闭ISP,IAP功能==================*/voidISP_IAP_disable(){ISP_CONTR=ISP_CONTR&0x7f;/*ISPEN=0*/ISP_TRIG=0x00;EA=1;/*开中断*/}/*================公用的触发代码====================*/voidISPgoon(){ISP_IAP_enab
7、le();/*打开ISP,IAP功能*/ISP_TRIG=0x46;/*触发ISP_IAP命令字节1*/ISP_TRIG=0xb9;/*触发ISP_IAP命令字节2*/_nop_();}/*====================字节读========================*/ucharbyte_read(uintbyte_addr){ISP_ADDRH=(uchar)(byte_addr>>8);/*地址赋值*/ISP_ADDRL=(uchar)(byte_addr&0x00ff);ISP_CMD=ISP_CMD&0xf8;/*清除低3位*/ISP_CMD=ISP_CMD
8、
9、RdCommand;/*写入读命令*/ISPgoon();/*触发执行*/ISP_IAP_disable();/*关闭ISP,IAP功能*/return(ISP_DATA);/*返回读到的数据*/}/*==================扇区擦除========================*/voidsectorerase(uintsector_addr){uintiSectorAddr;iSectorAddr=sector_addr&0xfe00;/*取扇区地址*/ISP_ADDRH=(uchar)(iSectorAddr>>8);ISP_ADDRL=0x00;ISP_CMD=I
10、SP_CMD&0xf8;/*清空低3位*/ISP_CMD=ISP_CMD
11、EraseCommand;/*擦除命令3*/ISPgoon();/*触发执行*/ISP_IAP_disable();/*关闭ISP,IAP功能*/}/*====================字节写========================*/voidbyte_write(uintbyte_addr,ucharoriginal_data){ISP_ADDRH=(uc