在截图中要求的基础上实现按9清除 按10存储在AT24C02中 按返回数码管重新显示之前点确认存在芯片中的数,大佬看一下程序逻辑哪儿有问题
- #include<reg51.h>
- #include<AT24C02.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit P3_2=P3^2;
- uchar code led_mod[]={0x3f,0x06,0x5b,0x4f,0x66,
- 0x6d,0x7d,0x07,0x7f,0x6f,0x00};
- uchar code BitCode[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
- uchar huanchong[]={10,10,10,10,10,10,10,10};
- uchar convert[]={10,10,10,10,10,10,10,10};
- uchar a=0;
- sbit SDA = P3^1;
- sbit SCL = P3^0;
- #define E2PROM_ADDR 0x12
- void dnms(uchar n)
- {
- uchar i;
- for(i=0;i<n;i++)
- delay1ms();
- }
- void int0() interrupt 0
- {
- uchar code RowCode[]={0xfe,0xfd,0xfb,0xf7};
- uchar temp,row,column,i,y,z;
- uchar m,n;
- P1=0xf0;
- temp = P1 & 0xf0;
- if (temp != 0xf0)
- {
- P2=0xff;
- switch (temp)
- {
- case 0x70: column = 3; break;
- case 0xb0: column = 2; break;
- case 0xd0: column = 1; break;
- case 0xe0: column = 0; break;
- default: break;
- }
- for (i=0;i<4;i++)
- {
- P1 = RowCode[i];
- temp = P1 & 0xf0;
- if (temp !=0xf0)
- {
- row = i;break;
- }
- }
- y= row *4 + column;
- if(y<10)
- {
- if(a<8)
- {
- huanchong[a++]=y;
- m=a;
- for(n=0;n<a;n++)
- {
- convert[n]=huanchong[--m];
-
- }
- }
- }
- if(y==10)
- {
- P2=0xff;
- a=0;
- for(z=0;z<8;z++)
- {
- huanchong[z]=10;
- convert[z]=10;
- }
- }
- while((P1 & 0xf0) !=0xf0);
- }
-
- }
- void start()
- {
- SDA = 1;
- SCL = 1;
- NOP4();
- SDA = 0;
- NOP4();
- SCL = 0;
- }
- void stop()
- {
- SDA = 0;
- SCL = 1;
- NOP4();
- SDA = 1;
- NOP4();
- SDA = 0;
- SCL = 0;
- }
- void Write_E2PROM(uchar add,uchar dat)
- {
- start();
- Write_E2PROM(E2PROM_ADDR);
- Write_E2PROM(add);
- Write_E2PROM(dat);
- stop();
- dnms(4);
- }
- uchar Read_E2PROM(uchar set_addr)
- {
- start();
- Read_E2PROM(E2PROM_ADDR);
- Read_E2PROM(set_addr);
- return (Read_E2PROM());
- }
- void BufToSeg(void)
- {
- uchar i=0;
- uchar x;
- for(i=0;i<8;i++)
- {
-
- P0=led_mod[10];
- P2= BitCode[i];
- P0=led_mod[convert[i]];
- if(P1=0x7b){
- Write_E2PROM(0x00,convert[i]);
- }
- if(P1=0xe7){
- x=Read_E2PROM(0x00);
- P0=led_mod[10];
- P2= BitCode[x];
- P0=led_mod[convert[x]];
- }
- }
- }
- void main(void)
- {
- EA=1;
- EX0=1;
- IT0=1;
- while(1)
- {
- P1=0x0f;
- BufToSeg();
- }
- }
复制代码 |