将从外部输入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++;
}
各位大侠!!帮忙看看哪
谢谢各位大侠了!!!!
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |