51单片机试题,写一个用单个数码管显示10秒倒计时的程序,急!!!!!

51单片机试题,写一个用单个数码管显示10秒倒计时的程序,急!!!!!,第1张

#include <reg52h>

#define uchar unsigned char

#define uint unsigned int

sbit duan=P2^6;

sbit wei=P2^7;

uchar disp=0;

uchar time=10;

int miao=0;

uchar code dispcode[]={

0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71}; //段码表

void Timer0Init(void) //1毫秒@12000MHz

{

TMOD &= 0xF0; //设置定时器模式

TMOD |= 0x01; //设置定时器模式

TL0 = 0x18; //设置定时初值

TH0 = 0xFC; //设置定时初值

TF0 = 0; //清除TF0标志

TR0 = 1; //定时器0开始计时

}

void main()

{

Timer0Init()

ET0=1; //开启定时器0中断

EA=1;

while(1);//等待中断

}

void time0(void)interrupt 1

{

TL0 = 0x18; //设置定时初值

TH0 = 0xFC; //设置定时初值

if(disp&1=0)

{

duan=1;

P0=dispcode[time%10];

duan=0;

wei=1;

P0=0xdf;

wei=0;

}

else

{

duan=1;

P0=dispcode[time/10];

duan=0;

wei=1;

P0=0xef;

wei=0;

}

disp++;

miao++;

if(miao==1000)

{

miao=0;

if(miao!=0)time--;

}

}

;假设单片机晶振fosc=6mhz,则t=2us;定时器计数器T0,方式1;60分钟之后干什么没有描述,故设定60分钟之后由p10口输出一高电平,并延时一段时间

org 0000h ljmp main org 000bh ljmp serve org 0100hmain:mov sp,#60h mov r0,#10 ;定时100ms10=1s mov r7,#60 ;1s60=1min,设1分钟计数初值 mov r6,#60 ;1min60=60min,设1小时计数初值 mov tmod,#01h mov th0,#3ch mov tl0,#0b0h clr p10 setb ea setb et0 setb tr0 sjmp $serve:mov th0,#3ch mov tl0,#0b0h djnz r0,loop mov r0,#10 djnz r7,loop mov r7,#60 djnz r6,loop mov r6,#60 setb p10 acall delay clr p10loop: retidelay:mov r1,#10lp1:mov r2,#0ffhlp2:nop nop djnz r2,lp2 djnz r1,lp1 retend

#include<reg51h>

void delay(unsigned int i);

unsigned int a[]={0XEF,0X8C,0XB7,0XBE,0XDC,0X7E,0X7F,0XAC,0XFF,0XFE};

unsigned int m=0,v=0,k=0,b[5];

void main()

{

TMOD=0X01;

TH0=0X3C;

TL0=0XB0;

EA=1;

IE=0X87;

IT0=1;

IT1=1;

TR0=0;

while(1)

{

P2=0x40;

P0=a[m%1000%100%10];

delay(3);

P2=0x20;

P0=a[m%1000%100/10];

delay(3);

P2=0x10;

P0=a[m%1000/100];

delay(3);

P2=0x08;

P0=a[m/1000];

delay(3);

}

}

void duan()interrupt 1

{

TH0=0X3C;

TL0=0XB0;

k++;

if(k==20)

{m++;

k=0;

}

}

void duan2()interrupt 2

{m=0;

}

void duan1()interrupt 0

{ v++;

if(v==1)TR0=1;

if(v==2)b[v]=m;

if(v==3)

{b[v]=m;

TR0=0;

}

if(v==4)m=b[2];

if(v==5)m=b[3];

if(v==6)v=0;

}

void delay(unsigned int i)

{unsigned int j,k;

for (k=0;k<i;k++)

for (j=0;j<255;j++);

}

#include<reg51h>

#define uchar unsigned char

#define uint unsigned int

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,

0x6f};

void display(uchar fen,uchar miao);

uchar a,fen,miao,shu;

void delay(uint z);

void init();

void main()

{

init();

while(1)

{

display(fen,miao);

}

}

void timer0() interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

a++;

if(a==20)

{

a=0;

shu++;

fen=shu/10;

miao=shu%10;

if(shu==60)

shu=0;

}

}

void init()

{

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

}

void display(uchar fen,uchar miao)

{

P1=0xFe;

P2=table[fen];

delay(5);//延时5毫秒

P1=0xFf;

P2=table[miao];

delay(5);//延时5毫秒

}

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

#include<stdioh>

#include<AT89X52h>

unsigned char flag;

unsigned char commond;

void main()

{

TMOD=0x21;//计数器1工作方式2,计数器0工作方式1

TH1=TL1=0xfb; //波特率9600

TR1=1; //开始计时

SCON=0x50; //串口工作方式1 ,允许接收数据

EA=1;

ES=1; //打开串口中断

ET0=0; //禁止计时器TO中断

while(1)

{

if(flag)

{

flag=0;

}

}

}

void comm() interrupt 4 using 2

{ //unsigned char i;

if(RI)

{

RI=0;

flag=1;

commond = SBUF;

P2= commond;

RI=0;

if(commond=='e')

{

ET0=1; //打开计数器0中断

TH0=(65536-50000)/256;

TL0=(65536-50000)%256; //延时05秒

TR0=1; //开始计时

}

}

}

void time0() interrupt 1 using 3

{

unsigned char j,k;

EA=0;

while(j>10)

{

j=0;

P3_4 = ~P3_4;

k++;

if(k>13)

{

TR0 =0;

k = 0;

}

}

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

j++;

EA =1;

}

你的程序好像是定时器中断那里有问题,这个改过的可以实现你的要求了

以上就是关于51单片机试题,写一个用单个数码管显示10秒倒计时的程序,急!!!!!全部的内容,包括:51单片机试题,写一个用单个数码管显示10秒倒计时的程序,急!!!!!、求单片机60分倒计时程序、单片机计时器程序(c语言)急急急!!!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9293000.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存