#include "reg51.h" #include "intrins.h" #define uchar unsigned char #define uint unsigned int
uchar code dispcode[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,0x7f, 0x6f,0x40,0x48}; uchar code dispwei[]={0xe0,0xd0,0xb0,0x70};
sbit EOC=P1^4; sbit CLK=P1^5; sbit ADDR=P1^6; sbit CS=P1^7; sbit SD0=P3^3;
void delay(uint m) {while(m--); }
void display(uchar shi,uchar ge) { uchar i; for(i=0;i<2;i++) { P2=0xff; P0=dispcode[shi]|0x80; P2=0xfe; delay(10); P2=0xff; P0=dispcode[ge]; P2=0xfd; delay(10); } }
float read1543(uchar port) { float ad; uint adl,i; uchar al=0;uchar ah=0; CS=1; CLK=0; CS=0; port<<=4;
for(i=0;i<4;i++) { ADDR=(bit)(port&0x80); CLK=1; delay(10); CLK=0; port<<=1; } for(i=0;i<6;i++) { CLK=1; CLK=0; } CS=1; _nop_();_nop_(); _nop_();_nop_(); _nop_();_nop_(); _nop_();_nop_(); _nop_();_nop_(); _nop_();_nop_(); _nop_();_nop_(); _nop_();_nop_(); _nop_();_nop_(); _nop_();_nop_(); _nop_();_nop_(); _nop_();_nop_(); _nop_();_nop_(); _nop_();_nop_(); _nop_();_nop_(); CS=0; _nop_();_nop_(); _nop_();_nop_(); _nop_();_nop_(); for(i=0;i<2;i++) { SD0=1; CLK=1; ah<<=1; if(SD0) al|=0x01; CLK=0; }
for(i=0;i<8;i++) { SD0=1; CLK=1; ah<<=1; if(SD0) al|=0x01; CLK=0; } CS=1; adl=ah; adl<<=8; adl|=al; ad=(float)((float)5*adl/(float)1024); return(ad); } void main(void) { float i; uchar r,k,e; while(1) { i=read1543(0);
k=i*10; e=k/10; r=k%10; display(e,r);
} }
|