有关51单片机的问题

开发板上的led流水灯的IO口P0连接了数码管的段选,现在我要想在下面的程序中再加一个led秒闪(就是led的闪烁频率为1秒),怎么加???P0口都去控制数码管的段选了???
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar duan[8];
uchar h,m,s;
void delay(uint t)
{
while(t--);
}
void T_0()
{
TMOD|=0x01;
//TH0=0x00;
//TL0=0x00;
EA=1;
ET0=1;
TR0=1;
}
main()
{
void display(uchar f,uchar n);
T_0();
P3=0xff;
while(1)
{
if(P3==0xfe)
{
delay(100);
if(P3==0xfe)
{
while(P3==0xfe);
h++;
if(h==24)
h=0;
}
}
if(P3==0xfd)
{
delay(100);
if(P3==0xfd)
{
while(P3==0xfd);
m++;
if(m==60)
m=0;
}
}
/*if(P3==0xfb)
{
delay(100);
if(P3==0xfb)
while(P3==0xfb);
s++;
if(s==60)
s=0;
} */
duan[0]=table[h/10];
duan[1]=table[h%10];
duan[2]=0x40;
duan[3]=table[m/10];
duan[4]=table[m%10];
duan[5]=0x40;
duan[6]=table[s/10];
duan[7]=table[s%10];
}
}
void display(uchar f,uchar n)
{
uchar i;
for(i=0;i<n;i++)
{
P1=wei[i+f];
P0=duan[i];
delay(100);
P0=0x00;
}
}
void Te_0() interrupt 1
{
static uint t;
TH0=(65536-1000)/256; //2ms
TL0=(65536-1000)%256;
display(0,8);
t++;
if(t==100)
{
t=0;
s++;
if(s==60)
{
s=0;
m++;
if(m==60)
{
m=0;
h++;
if(h==24)
h=0;
}
}
}
}

1、8位二进制补码表示十六位进制的范围是多少?是-80H~7FH么
是。
----
2、“8051单片机的外部拓展EEPROM程序存储器进行适当的连接可以作为数据存储器使用,而8051单片机的外部拓展数据存储器也可以作为程序存储器进行程序调试”
前一句懂,后一句为什么是对的呢?如果外部数据存储器没有连接方式的话,MOVC这种查表指令该怎么办呢?数据存储和程序存储器的指令不是不同吗?还有我们编写KEILC程序时,指令是存在单片机哪里的?是外部程序存储器还是内部程序存存储器里?(可能存在外部数据存储器么)

这些话,是否正确,要看硬件电路。
如果把 PSEN 和 RD 相与,外部拓展数据存储器,也可以作为程序存储器。

前一句:外部拓展EEPROM程序存储器进行适当的连接可以作为数据存储器使用,
这里已经说了,需要适当的连接。

就是说,电路进行了改动,什么事情,都是可能发生的。
不要再提出疑问。
----
3、“能够用于寄存器寻址的寄存器有:Rn、Ri、DPTR、A、B、CY",
DPTR为毛也行啊,有MOV A,DPTR这种指令吗?徐汉斌单片机教材上就DPTR有关的指令只有4个,MOVX A,@DPTR;MOVX @DPTR,A;MOV DPTR,#addr16;MOVC A,@DPTR+A

你复习考试,要选定一本教材,不同的作者,说法不一。
----
4、“MSC 51单片机定时\计数器对外部脉冲进行计数时,要求输入的计数脉冲的高电平或低电平的持续时间不少于一个机器周期”,这句话哪里有错,实在没看出来

有错吗?
----
5、两数相减用补码运算时,是不是CY等于0表示第一个数小于第二个数,CY等于1表示第一个数大于第二个数

单片机的计算,是按照无符号数进行的,Cy,可以反应出无符号数的大小。
想像成补码,并不这么简单,补码是有正负的。
----
6、单片机怎样区别BCD码与16进制数?比如说计算BCD码的补码时,其模9AH与16进制相同,单片机怎么区分这是BCD码的100?

单片机不区别这个,需要编程人,编写程序来解决 BCD 码的问题。
----
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-08-18
很好办,你需要加点东东,改点东东
前面加点申明
sbit led=P1^0;//你可以改成其他引脚

修改一下定时器中断服务程序
void Te_0() interrupt 1
{
static uint t;
TH0=(65536-1000)/256; //2ms
TL0=(65536-1000)%256;
display(0,8);
t++;
if(t<80)led=0; //led亮0.8秒
else led=1; //灭0.2秒
if(t==100)
{
t=0;
s++;
if(s==60)
{
s=0;
m++;
if(m==60)
{
m=0;
h++;
if(h==24)
h=0;
}
}
}
}追问

P1口连接的是数码管的位选了,就只剩下P2口了,但是那要怎么连线了,P2口跟谁连?????

追答

P2的一个IO口连接一个1K的电阻连接LED再接地,这是“高”亮接法
Vcc接1K电阻接LED灯接P2的IO口,这是“低”亮接法。

追问

???在单片机开发板上怎么接??开发板上不是一般都用杜邦线连接排针,你那个怎么连??

追答

找根导线,找个电阻,找个LED发光管,就可以连接了。

追问

非常感谢你的回答。。

本回答被网友采纳
第2个回答  2014-08-18
位选间隔1秒导通,用定时器追问

大神能不能再详细点,拜托。。。。。。

追答

你的意思P0既是流水灯的,又是数码管段选?

追问

对。。。。。下面是开发板的电路图,我有点看不懂。。。

追答

加了74HC573锁存器,可以分别控制灯和数码管,自己琢磨去吧

追问

不能提示我吗?

第3个回答  2014-08-18
如果还有 P2 可用,那么:

在 P2 每个引脚,分别连接八个 LED 的负极。
每个 LED 的正极,分别串联 510~1000 欧姆的电阻,
连接到电源+5V。

P2 输出低电平时,LED 发光。

流水灯程序如下:

#include<reg52.h>
#include<intrins.h> //加上一个库

uchar led = 0x7F; //加上一个变量

//……省略

//-----------------------------
void Te_0() interrupt 1
{
static uint t;

static uint t_l; //加上一个变量

TH0=(65536-2000)/256; //2ms
TL0=(65536-2000)%256;
t++;
if(t==500){ t=0;s++;
if(s==60) { s=0;m++;
if(m==60) { m=0;h++;
if(h==24) h=0;
}
}
}
//---------------------加上下面这些
t_l++;
if(t_l == 500) { //时间可以自己改
t_l = 0;
led = _cror_ (led, 1);//移位
P2 = led; //输出
}
}

省略的部分,可以看以前的回答。
http://zhidao.baidu.com/question/872674912401293692.html追问

本回答被提问者采纳

51单片机的优缺点
然而,51单片机并非没有缺点。首先,其位处理功能虽然强大,但并不意味着所有操作都比字或字节处理更加高效。在一些特定场景下,字或字节处理可能更为合适。其次,51单片机的功耗相对较高,这在电池供电的应用中可能是一个需要注意的问题。再者,由于51单片机的设计初衷是为了满足特定的应用需求,因此其扩展...

51单片机关于寄存器的问题,请帮助我解释一下
P1M0和P1M1是两个寄存器,它们用于设置P1口各个端口的工作状态。每个端口都有四种工作状态,分别为00b、01b、10b、11b。通过P1M0和P1M1的位控制,可以管理P1的八个端口的所有四种工作状态。例如,P1M0.7和P1M1.7控制P1.7端口的工作状态,分别为准双向口、推挽输出、仅为输入和开漏(Open Drain)。同...

51系列单片机的周期是多少?
1.大部分51单片机1个机器周期=12个时钟周期(或振荡周期),有些增强型的1个机器周期=1个时钟周期(或振荡周期),如stc12系列,stc15系列 2.51单片机的机器周期=1\/晶振频率;当晶振频率=11.0592MHz,1个机器周期=12个时钟周期(或振荡周期)时,机器周期=12\/11.0592微秒。

51单片机的编程问题?
51单片机一个显著优点就是指令执行时间固定,因此可以适应时序要求严格的场合。例如符合ISO7816协议的cpu卡的读写,对时序要求比较严格。其实就是用io脚做出来的同步半双工串口。支持cpu卡的程序一般比较庞大,需要用c51来组织,但是由于c编译的不确定性,必须把底层程序封装成汇编语言模块嵌入到工程中。这就...

51单片机的问题
7.定时\/计数器工作于定时方式时,是通过89C51片内振荡器输出经12分频后的脉冲进行计数,--对。直至溢出。--这要看你的软件,也可以让它永远不溢出。8.80C51单片机的扩展程序存储器与片内程序存储器存储空间重叠。--可以重叠,也可以不重叠。--这要看,是谁设计电路了。9.在中断响应时断点地址...

51单片机有几个中断优先级?
MCS-51单片机有两个中断优先级。在51单片机中,有2个可编程定时\/计数器·5个中断源,2个优先级,21个专用寄存器。另有8位CPU的4kbytes程序存储器(ROM) ,128bytes的数据存储器(RAM),32条I\/O口线·111条指令,大部分为单字节指令。优先级设定方法:1、IP的状态由软件设定,某位设定为“1”,...

51单片机。 某不才,快30了,想转行玩单片机。故自学中。以后会问些白痴...
答一:厂家规定的,20-50pf以内,用来消除晶振的谐波的,增强系统稳定性。答二:目前我还没有发现晶振频率要靠电容来微调,有意思?答三:物理位置靠近,晶振引脚与单片机接口位置,目的还是减少外界干扰,增强系统稳定性。

51单片机位的问题?
可以访问1M字节.51内核是8位,其数据总线是8位的.虽然51的地址总线也是8位的,但是可以借助DPTR寄存器,从而扩展地址,所以51最大寻址能力是2的16次方,即65536个字节 = 64K字节.但是,数据总线没有扩展,只能是8位的,所以,你访问一个short类型的变量时,则需要两次读取数据,而X86只需要读取一次数据 ...

MCS-51单片机的几个问题
3、数字较大,将使用多个字节进行存放。多数情况下,用1~2个字节,就可以存放单片机领域里面的数字。4、布尔处理器,是指按照单独的“位”,进行的逻辑运算,指令有:ANL C, bit ORL C, bit ……指令中的bit,即前面讲的“位地址”。5、浮点数,在单片机应用领域,可以说是永远用不到的,...

51单片机的优缺点
1、AD、EEPROM等功能需要靠扩展,增加了硬件和软件负担 2、虽然I\/O脚使用简单,但高电平时无输出能力,这也是51系列单片机的最大软肋 3、运行速度过慢,特别是双数据指针,如能改进能给编程带来很大的便利 4、51单片机保护能力很差,很容易烧坏芯片 应用范围:目前在教学场合和对性能要求不高的场合大量...

相似回答