谁知道这程序怎么修改
#include<regc51.h>#defineucharunsignedchar#defineuintunsignedintsbitdula=P2^1;//段选信号s...
#include<regc51.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^1;//段选信号
sbit wela=P2^0;//位选信号
sbit button=P3^5;//开关
uchar code table[]={0x39,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
void delayms(uint);
void key(uint);
void display(uchar,uchar,uchar,uchar);
uchar num,num1,flag;
void main()
{
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
while(1)
{
button=1;
key();
witch(flag)
{
case 0:TR0=0;;break;
case 1:TR0=1;break;
case 2:TR0=0;break;
default:flg=0;break;
}
display(shi,ge,fen,baifen)
}
}
void display(unchar shi,unchar ge,unchar fen,unchar baifen)
{
dula=1;//;段选开启
P0=table[shi];//输入段选的位数
P0=0xff;//消影
wela=1;//位选开启
P0=0xfe;//位选信号
wela=0;//位选保持
delayms(5);
dula=1;//;段选开启
P0=table[ge];//输入段选的位数
P0=0xff;//消影
wela=1;//位选开启
P0=0xfd;//位选信号
wela=0;//位选保持
delayms(5);
dula=1;
P0=table[fen];
P0=0xff;
wela=1;
P0=0xfc;
wela=0;
delayms(5);
dula=1;
P0=table[baifen];
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delayms(5);
}
void delayms(uint xms)//延时程序
{
uint j,i;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void T0_time()interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
num++;
if(num=5);
{
num=0;
num1++;
if(num1<=6000)
(
shi=num1/1000;
ge=num1/100%10;
fen=num1%100/10;
baifen=num1/10;
}
}
}
void key()
{
if(button==0)
{
delayms(10);
if(button==0)
{
while(!button);
flag++;
}
}
}
这是单片机的编程 展开
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^1;//段选信号
sbit wela=P2^0;//位选信号
sbit button=P3^5;//开关
uchar code table[]={0x39,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
void delayms(uint);
void key(uint);
void display(uchar,uchar,uchar,uchar);
uchar num,num1,flag;
void main()
{
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
while(1)
{
button=1;
key();
witch(flag)
{
case 0:TR0=0;;break;
case 1:TR0=1;break;
case 2:TR0=0;break;
default:flg=0;break;
}
display(shi,ge,fen,baifen)
}
}
void display(unchar shi,unchar ge,unchar fen,unchar baifen)
{
dula=1;//;段选开启
P0=table[shi];//输入段选的位数
P0=0xff;//消影
wela=1;//位选开启
P0=0xfe;//位选信号
wela=0;//位选保持
delayms(5);
dula=1;//;段选开启
P0=table[ge];//输入段选的位数
P0=0xff;//消影
wela=1;//位选开启
P0=0xfd;//位选信号
wela=0;//位选保持
delayms(5);
dula=1;
P0=table[fen];
P0=0xff;
wela=1;
P0=0xfc;
wela=0;
delayms(5);
dula=1;
P0=table[baifen];
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delayms(5);
}
void delayms(uint xms)//延时程序
{
uint j,i;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void T0_time()interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
num++;
if(num=5);
{
num=0;
num1++;
if(num1<=6000)
(
shi=num1/1000;
ge=num1/100%10;
fen=num1%100/10;
baifen=num1/10;
}
}
}
void key()
{
if(button==0)
{
delayms(10);
if(button==0)
{
while(!button);
flag++;
}
}
}
这是单片机的编程 展开
推荐于2016-03-11 · 知道合伙人互联网行家
关注
展开全部
#include <reg52.h>
#define uchar unsigned char //宏定义
#define uint unsigned int
void delay_50ms(uint t)
{ uint j;
for(;t>0;t--)
for(j=6245;j>0;j--);} //延时函数
void main()
{
uchar i,key;
i=0; //【初始化i 】
while(1)
{
P3=0Xff; //这是为了定位停下就是遇到P3^3==P3^2==0就查遇到几次用开关控制次数
if(P3^3==P3^姬丹灌柑弑纺鬼尸邯建2 && P3^3==0)
{
i=0; // 【i的初始化不能放在这里,不然不可能得到2,3,4】
i=i++;
P0=0X11;
P3=key;
delay_50ms(20);
switch(key)
{
case 0xf1:i=1;P0=0X00;break;
case 0xe9:i=2;P0=0X00;break;
case 0xd9:i=3;P0=0X00;break;
case 0xb9:i=4;P0=0X00;break;
default:break;}
}
else
EA=1;
EX0=1;
EX1=1;
IT0=0;
IT1=0;
P0=0X11;
}
}
void int0 () interrupt 0 //0号中断函数,当int0为低电平或有一下降沿信号时触发,转弯有的一个发动机不转另一个转
{
P0=0x01;
}
void int2 () interrupt 2 // 2号中断函数,【interrupt 0 改为interrupt 2】
{
P0=0x10;
}
经keil 编译后无错误,无警告。
#define uchar unsigned char //宏定义
#define uint unsigned int
void delay_50ms(uint t)
{ uint j;
for(;t>0;t--)
for(j=6245;j>0;j--);} //延时函数
void main()
{
uchar i,key;
i=0; //【初始化i 】
while(1)
{
P3=0Xff; //这是为了定位停下就是遇到P3^3==P3^2==0就查遇到几次用开关控制次数
if(P3^3==P3^姬丹灌柑弑纺鬼尸邯建2 && P3^3==0)
{
i=0; // 【i的初始化不能放在这里,不然不可能得到2,3,4】
i=i++;
P0=0X11;
P3=key;
delay_50ms(20);
switch(key)
{
case 0xf1:i=1;P0=0X00;break;
case 0xe9:i=2;P0=0X00;break;
case 0xd9:i=3;P0=0X00;break;
case 0xb9:i=4;P0=0X00;break;
default:break;}
}
else
EA=1;
EX0=1;
EX1=1;
IT0=0;
IT1=0;
P0=0X11;
}
}
void int0 () interrupt 0 //0号中断函数,当int0为低电平或有一下降沿信号时触发,转弯有的一个发动机不转另一个转
{
P0=0x01;
}
void int2 () interrupt 2 // 2号中断函数,【interrupt 0 改为interrupt 2】
{
P0=0x10;
}
经keil 编译后无错误,无警告。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询