关于初学者两个简单的程序疑惑。
时间:10-02
整理:3721RD
点击:
题目是这样的,利用单片机P1口接8个发光二极管,P3.1接一个开关,编程实现当开关动作一次时,单片机进行一次加1运算,并在对应的二极管上显示。
我开始理解错了题目的意思,以为只要实现发光二极管逐个亮就行了,但实际题目要求的是实现用二极管亮为1灭为0的形式,通过一个开关实现0000 0000--1111 1111 的展示,以二进制加法的形式表现出来。希望大家能给点提示。刚学单片机,多多关照了。附带一个问题 请大家帮忙看看这个程序哪里错了,也是关于单片机c51程序设计的。
#include<reg52.h>
unsigned char Tab[]={0xC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
unsigned int x;
sbit P34=P3^4;
void delay1ms(unsigned int i)
{
unsigned char j;
while (i--)
{
for (j=0;j<115;j++)
{
;
}
}
}
void Display (unsigned char x )
{
P2=0XDF;
P0=Tab[x/100];
delay1ms (5);
P2=0XBF;
P0=Tab [x%10];
delay1ms (5) ;
P2=0XFF;
}
void main (void)
{
TMOD=0X06;
EA=1;
ET0=1;
EX0=1;
IT0=1;
TR0=1;
TH0=TL0=256-1;
while (1);
{
Display (x);
}
}
voidclear 0;
interrupt 0;
{
X=0;
}
void key_counter()
interrupt 1;
{
if(P34==0)
{
delay1ms(20);
if (P34==0)
{
delay1ms(20);
if(P34==0)
{
x=(x+1)%100;
}
}
}
}
。
我开始理解错了题目的意思,以为只要实现发光二极管逐个亮就行了,但实际题目要求的是实现用二极管亮为1灭为0的形式,通过一个开关实现0000 0000--1111 1111 的展示,以二进制加法的形式表现出来。希望大家能给点提示。刚学单片机,多多关照了。附带一个问题 请大家帮忙看看这个程序哪里错了,也是关于单片机c51程序设计的。
#include<reg52.h>
unsigned char Tab[]={0xC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90};
unsigned int x;
sbit P34=P3^4;
void delay1ms(unsigned int i)
{
unsigned char j;
while (i--)
{
for (j=0;j<115;j++)
{
;
}
}
}
void Display (unsigned char x )
{
P2=0XDF;
P0=Tab[x/100];
delay1ms (5);
P2=0XBF;
P0=Tab [x%10];
delay1ms (5) ;
P2=0XFF;
}
void main (void)
{
TMOD=0X06;
EA=1;
ET0=1;
EX0=1;
IT0=1;
TR0=1;
TH0=TL0=256-1;
while (1);
{
Display (x);
}
}
voidclear 0;
interrupt 0;
{
X=0;
}
void key_counter()
interrupt 1;
{
if(P34==0)
{
delay1ms(20);
if (P34==0)
{
delay1ms(20);
if(P34==0)
{
x=(x+1)%100;
}
}
}
}
。
voidclear 0;这个是什么东西?