设计一个由51单片机控制的0到五秒的程序延时程序!再加个数码管显示延时的秒数。可以循环的。

开始按下时,显示零秒,p1.0一直输出高。再按一下。显示1,.p1.0灯亮一秒,灭一秒循环,再按一下,p1.0灯亮两秒,灭两秒循环。。。。再按一下,p1.0灯亮五秒,灭五... 开始按下时,显示零秒,p1.0一直输出高。再按一下。显示1,.p1.0灯亮一秒,灭一秒循环,再按一下,p1.0灯亮两秒,灭两秒循环。。。。再按一下,p1.0灯亮五秒,灭五秒循环!要求共阳的。共阳的比较亮。谢谢了 展开
 我来答
做而论道
高能答主

2014-03-16 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.1亿
展开全部
开始按下时,显示零秒,p1.0一直输出高。再按一下。显示1,.p1.0灯亮一秒,
----
应该从没有按,就开始显示零秒。

;使用 11.0592MHz,程序如下。

LED BIT P1.0
KEY BIT P1.7

ORG 0000H
SJMP START
ORG 000BH
MOV TH0, #4CH
SETB F0
RETI
;--------------------------------------
START:
MOV TMOD, #01H
MOV TH0, #4CH
MOV TL0, #00H ;50ms@11.0592MHz
SETB TR0
MOV IE, #82H
;--------------------------------------
M_LOOP:
MOV R2, #0
LP0:MOV A, R2
ADD A, #(TAB - $ - 3)
MOVC A, @A + PC
MOV P2, A
MOV P0, A
MOV A, R2
MOV B, #20
MUL AB
LP1:MOV R3, A
LP2:CJNE R2, #0, LP3
SETB LED ;LED 在P1.0
JZ K_I
LP3:JNB F0, K_I
CLR F0
DJNZ R3, LP2
CPL LED ;LED 在P1.0
SJMP LP1
K_I:JB KEY, LP2 ;按键在P1.7
MOV R6, #10
DJNZ R7, $
DJNZ R6, $ - 2
JB KEY, LP2
JNB KEY, $
INC R2
CJNE R2, #6, LP0
SJMP M_LOOP
;--------------------------------------
TAB:
;共阳段码
DB 0C0H,0F9H,0A4H,0B0H, 99H, 92H, 82H,0F8H
DB 080H, 90H, 88H, 83H,0C6H,0A1H, 86H, 8EH
END
更多追问追答
追问
能加你扣号吗?想和你交个朋友?怎么p0口还有共阴的输出
追答
没有共阴的输出。
P0、P2,都可以接共阳的数码管。

P0 的驱动能力强一些,会更亮一些。

51 单片机的程序,无论汇编或 C,都应该用 Keil 软件来编译。
楼主怎么了,竟然用上了 VC++ 6.0 ?
p5625928
2014-03-17 · 超过10用户采纳过TA的回答
知道答主
回答量:22
采纳率:0%
帮助的人:30.6万
展开全部
#include <reg52.h>

#define uchar unsigned char

uchar code table[]={
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,
0xF8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};

sbit s1=P1^7;
sbit led=P1^0;

uchar m=0;
uchar model=0;
uchar sec=0;
uchar t=0;

void main()
{
TMOD=0x01;
TH0=(65536-50000)%256;
TL0=(65536-50000)/256;
TR0=1;
ET0=1;
EA=1;

while(1)
{
if(s1==0)
{
while(s1==0);
m++;

switch(m)
{
case 1:{model=1;sec=0;}break;
case 2:{model=2;sec=0;}break;
case 3:{model=3;sec=0;}break;
case 4:{model=4;sec=0;}break;
case 5:{model=5;sec=0;}break;
case 6:{model=0;m=0;}break;
}
}
if(model==0)
{led=1;P2=table[0];}
if(model==1)
{
if(sec%2==0)
{led=0;P2=table[0];}
if(sec%2!=0)
{led=1;P2=table[1];}
}

if(model==2)
{
if(sec<2)
{led=0;P2=table[sec];}
if(sec>=2)
{led=1;P2=table[sec];}
if(sec==4)
{sec=0;}
}
if(model==3)
{
if(sec<3)
{led=0;P2=table[sec];}
if(sec>=3)
{led=1;P2=table[sec];}
if(sec==6)
{sec=0;}
}
if(model==4)
{
if(sec<4)
{led=0;P2=table[sec];}
if(sec>=4)
{led=1;P2=table[sec];}
if(sec==8)
{sec=0;}
}
if(model==5)
{
if(sec<5)
{led=0;P2=table[sec];}
if(sec>=5)
{led=1;P2=table[sec];}
if(sec==10)
{sec=0;}
}

}
}

void timer0() interrupt 1
{
TH0=(65536-50000)%256;
TL0=(65536-50000)/256;
t++;
if(t==20)
{t=0;sec++;}

}
更多追问追答
追问

头文件说有错误

追答

你没说用那个编写软件啊- -

我这使用keil编的,你试试改为   reg51.h   看行不行

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式