当前位置:首页 » 编程语言 » 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-05-16 06:03:15 浏览:952
c程序编译连接 发布:2025-05-16 06:02:36 浏览:964
脚本魔兽 发布:2025-05-16 06:01:52 浏览:330
文件夹python 发布:2025-05-16 06:01:43 浏览:627
电脑我的世界服务器游戏币 发布:2025-05-16 05:27:25 浏览:488
索尼手机为什么不能用安卓10 发布:2025-05-16 05:18:46 浏览:784
蔚来es6选择哪些配置实用 发布:2025-05-16 05:18:05 浏览:130
小米如何扫码wifi密码 发布:2025-05-16 05:13:38 浏览:807
楼层密码是什么意思 发布:2025-05-16 05:13:37 浏览:13
创建文件夹失败 发布:2025-05-16 05:12:59 浏览:397