当前位置:首页 » 编程语言 » C语言52

C语言52

发布时间: 2023-06-12 09:01:51

❶ 用52单片机C语言编写程序,实现00~59计时。要求用T0,工作方式1。

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit la=P2^6; //段选
sbit wela=P2^7; //位选
uchar shi,ge,num1,num2; //变量
uchar code table[]={0x3f,0x06,0x5b,0x4f, //共阴极字型码
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint x) //延时子程序
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
void init()
{
TMOD=0x01; //设置定时器0的工作方式
TH0=(65536-50000)/256; //装初值
TL0=(65536-50000)%256;
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //启动定时器0
}
void display() //显示子程序
{
la=1;
P0=table[ge]; //送段选数据
la=0;
P0=0xff; //送位选数据前关闭所有显示
wela=1;
P0=0xfe; //送位选数据
wela=0;
delay(5); //延时

la=1;
P0=table[shi];
la=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(5);
}
void main()
{
init();
while(1)
{
display();
}
}
void timer() interrupt 1
{
TH0=(65536-50000)/256; //重装初值
TL0=(65536-50000)%256;
num1++;
if(num1==20) //到了20次,1秒时间到
{
num1=0; //清0重新计数
num2++;
if(num2==60)
num2=0;
P1=0x00;
delay(500);
P1=0xff;
shi=num2/10; //把一个2位数分离后分别送数码管显示
ge=num2%10; //十位和个位
}
}

试了的,可以放心,采纳吧!

热点内容
如何在安卓上让苹果耳机弹窗 发布:2025-02-13 11:38:13 浏览:191
搭建自己的服务器直播间 发布:2025-02-13 11:27:34 浏览:986
酷狗音乐试听缓存删了会怎样 发布:2025-02-13 11:02:12 浏览:267
python游戏服务端 发布:2025-02-13 11:00:19 浏览:927
云原生服务器 发布:2025-02-13 10:55:34 浏览:827
linuxip命令查看ip 发布:2025-02-13 10:49:45 浏览:421
java基础应用 发布:2025-02-13 10:44:53 浏览:711
linux内核抢占 发布:2025-02-13 10:36:32 浏览:890
家装公司源码 发布:2025-02-13 10:35:35 浏览:49
aspnet更新数据库 发布:2025-02-13 10:35:34 浏览:385