用C51语言设计程序,实现0~99秒计数器
2016-01-25 11:49
246 查看
要求:
2个数码管显示。
三个独立按键控制,P1.1开始、P1.2暂停P、1.3清零。
要c语言的 重赏
悬赏分:80 | 提问时间:2010-6-23 17:38 | 提问者:牛听我弹琴 | 问题为何被关闭
//=======================================
呵呵,这个问题,回答了足有一年了。
因为提问者没有选为最佳答案,故此也就没有收录到博客。
(当时的回答是完全正确的,但是提问者得到答案后,却关闭了题目,真不厚道。)
那么现在怎么又在博客中发表了呢?
因为前几天有个网友,用我写的程序,去回答另一个问题,结果当然是所答非所问。
(可见:http://zhidao.baidu.com/question/282405934.html#here)
故此,在这里把我一年前写的程序,重新发表出来,以正视听。
原题网址:http://zhidao.baidu.com/question/161700665.html?an=0&si=4
//下面是00-99秒计数的C语言程序。
#include<reg52.h>
#include<intrins.h>
unsigned char i, j;
unsigned char code table[] = {
0xc0, 0xf9, 0xa4, 0xb0, 0x99,
0x92, 0x82, 0xf8, 0x80, 0x90};
sbit QI_DONG = P1^1;
sbit TING_ZH = P1^2;
sbit QING_LY = P1^3;
bit k;
//---------------------------------------------
void Delay_1ms(unsigned int x)
{
unsigned int i, j;
for(i = 0; i < x; i++) for(j = 0; j <= 148; j++);
}
//---------------------------------------------
void main( )
{
TMOD = 0x01; //;T0定时方式1
TH0 = (65536-50000) / 256; //;50ms@12MHz
TL0 = (65536-50000) % 256;
TR0 = 1; //;定时器初始化结束.
ET0 = 1; //;开启定时中断.
EX0 = 1;
EX1 = 1;
EA = 1;
i = 0;
j = 0;
P0 = 0xC0;
P2 = 0xC0;
while(1) {
if (QI_DONG == 0) {
Delay_1ms(10); while(QI_DONG == 0); k = 1;
}
if (TING_ZH == 0) {
Delay_1ms(10); while(TING_ZH == 0); k = 0;
}
if (QING_LY == 0) {
Delay_1ms(10); while(QING_LY == 0);
i = 0; j = 0; P0 = 0xC0; P2 = 0xC0;
}
}
}
//---------------------------------------------
void timer0(void) interrupt 1
{
TL0 = (65536-50000) % 256;
TH0 = (65536-50000) / 256; //;50ms@12MHz
if (k) {
j++;
if (j == 20) {
j = 0;
i++;
if (i == 100) i = 0;
P0 = table[i / 10];
P2 = table[i % 10];
}
}
}
//---------------------------------------------
本程序,经过了PROTEUS检验,截屏如下图。
![](http://img.bimg.126.net/photo/3dV5wdEFoac9iTpFvSuOsg==/4583538520773427879.jpg)
图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/5124b017da58fa1521a4e9d8.html#
//=============================================
2个数码管显示。
三个独立按键控制,P1.1开始、P1.2暂停P、1.3清零。
要c语言的 重赏
悬赏分:80 | 提问时间:2010-6-23 17:38 | 提问者:牛听我弹琴 | 问题为何被关闭
//=======================================
呵呵,这个问题,回答了足有一年了。
因为提问者没有选为最佳答案,故此也就没有收录到博客。
(当时的回答是完全正确的,但是提问者得到答案后,却关闭了题目,真不厚道。)
那么现在怎么又在博客中发表了呢?
因为前几天有个网友,用我写的程序,去回答另一个问题,结果当然是所答非所问。
(可见:http://zhidao.baidu.com/question/282405934.html#here)
故此,在这里把我一年前写的程序,重新发表出来,以正视听。
原题网址:http://zhidao.baidu.com/question/161700665.html?an=0&si=4
//下面是00-99秒计数的C语言程序。
#include<reg52.h>
#include<intrins.h>
unsigned char i, j;
unsigned char code table[] = {
0xc0, 0xf9, 0xa4, 0xb0, 0x99,
0x92, 0x82, 0xf8, 0x80, 0x90};
sbit QI_DONG = P1^1;
sbit TING_ZH = P1^2;
sbit QING_LY = P1^3;
bit k;
//---------------------------------------------
void Delay_1ms(unsigned int x)
{
unsigned int i, j;
for(i = 0; i < x; i++) for(j = 0; j <= 148; j++);
}
//---------------------------------------------
void main( )
{
TMOD = 0x01; //;T0定时方式1
TH0 = (65536-50000) / 256; //;50ms@12MHz
TL0 = (65536-50000) % 256;
TR0 = 1; //;定时器初始化结束.
ET0 = 1; //;开启定时中断.
EX0 = 1;
EX1 = 1;
EA = 1;
i = 0;
j = 0;
P0 = 0xC0;
P2 = 0xC0;
while(1) {
if (QI_DONG == 0) {
Delay_1ms(10); while(QI_DONG == 0); k = 1;
}
if (TING_ZH == 0) {
Delay_1ms(10); while(TING_ZH == 0); k = 0;
}
if (QING_LY == 0) {
Delay_1ms(10); while(QING_LY == 0);
i = 0; j = 0; P0 = 0xC0; P2 = 0xC0;
}
}
}
//---------------------------------------------
void timer0(void) interrupt 1
{
TL0 = (65536-50000) % 256;
TH0 = (65536-50000) / 256; //;50ms@12MHz
if (k) {
j++;
if (j == 20) {
j = 0;
i++;
if (i == 100) i = 0;
P0 = table[i / 10];
P2 = table[i % 10];
}
}
}
//---------------------------------------------
本程序,经过了PROTEUS检验,截屏如下图。
![](http://img.bimg.126.net/photo/3dV5wdEFoac9iTpFvSuOsg==/4583538520773427879.jpg)
图片链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/5124b017da58fa1521a4e9d8.html#
//=============================================
相关文章推荐
- 用51单片机汇编语言,写一个60s倒计时的程序
- 用51单片机汇编语言,编写“键控加减一”的程序
- OC浮点数是否需要加上f后缀
- 三层登录——VB.NET版
- Visual Studio 快捷键
- AutoTile 自动拼接(四) 学习与实践
- ubuntu下安装无线网卡去驱动Qualcomm-Atheros-QCA9377
- 动态获取cell高度
- 用51单片机汇编语言设计程序,实现一个4位秒表
- Python 字符编码学习-ascii编码,Unicode和UTF-8之间的关系
- 数码管显示 0-9999计数器
- 51单片机汇编语言编程:开关控制计时
- 数码管显示 0000-9999计数器
- 51单片机2个外部中断的应用
- 用80x86汇编语言编程:键盘输入与显示输出
- 用80x86汇编语言编程:输入后反序显示
- 用80x86汇编语言读写系统时间
- 利用单片机控制频率合成器 MC145151-2 的输出频率
- #UML#UML类图
- 智能交通灯