将从外部输入IO口的数据转为10进制数,显示在数码管上
我不知道怎样将IO口的数据读入
求各位大侠帮小弟看看后面改怎么写,怎么改
谢谢各位大侠!!
#include<reg52.h> #include<string.h> #define uchar unsigned char #define uint unsigned int sbit a1=P3^0; sbit a2=P3^1; sbit a3=P3^2; sbit a4=P3^3; sbit a5=P3^4; sbit a6=P3^5; sbit a7=P3^6; sbit a8=P3^7; sbit a9=P0^0; sbit a10=P0^1; sbit a11=P0^2; sbit a12=P0^3; sbit a13=P0^4; sbit a14=P0^5; uchar code tabledu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40,0x80,0x00}; uchar count,wang,qin,bai,shi,ge; uint temp,aa,n,j,i,t=0,p=1; char a[50]; //延迟函数 void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } //初始化函数 void init() { TMOD=0x01; //定时器T0为工作方式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; ET0=1; EA=1; //开启总中断 TR0=1; //启动定时器 count=0;
} //显示函数 void display(uchar wang,uchar qin,uchar bai,uchar shi,uchar ge){ P2=tabledu[wang]; P1=0x00; delay(1);
P2=tabledu[qin]; P1=0x01; delay(1);
P2=tabledu[bai]; P1=0x02; delay(1);
P2=tabledu[shi]; P1=0x03; delay(1);
P2=tabledu[ge]; P1=0x04; delay(1);
} void main() { init(); char a[50]; //将2进制数转为10进制数 gets(a); n=strlen(a); for(i=n-1;i>=0;i--) { p=1; t=(a-48); if(i==n-1) { p=1; } else { for(j=0;j<n-i-1;j++) { p=p*2; } } temp+=t*p; } 、 while(1){ if(count==10){ count=0; wang=temp/10000; qin=temp%10000/1000; bai=temp%10000%1000/100; shi=temp%10000%1000%100/10; ge=temp%10; } display(wang,qin,bai,shi,ge); //调用显示函数 } } void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; count++; } |