你好!欢迎来到深圳市颖特新科技有限公司!
语言
当前位置:首页 >> 技术中心 >> 单片机入门 >> 单片机C语言程序设计:100 000s 以内的计时程序

单片机C语言程序设计:100 000s 以内的计时程序

关键字:000s 单片机 C语言 作者:admin 来源:不详 发布时间:2018-05-18  浏览:0

/*  名称:100 000s 以内的计时程序

说明:在 6 只数码管上完成 0~99 999.9s。

*/

#include<reg51.h>

#include<intrins.h>

#define uchar unsigned char

#define uint unsigned int

//段码

uchar code

DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//6 只数码管上显示的数字

uchar Digits_of_6DSY[]={0,0,0,0,0,0}; 

uchar Count; 

sbit Dot=P0^7;

//延时

void DelayMS(uint ms)

{

uchar t;

while(ms--) for(t=0;t<120;t++);

}

//主程序

void main()

{

uchar i,j;

P0=0x00;

P3=0xff;

Count=0;

 

                 TMOD=0x01;      

//计数器 T0 方式 1

TH0=(65536-50000)/256; //50ms 定时

TL0=(65536-50000)%256;

IE=0x82;

 

TR0=1;       //启动 T0

while(1)

{

j=0x7f;

//显示 Digits_of_6DSY[5]~Digits_of_6DSY[0]的内容

//前面高位,后面低位,循环中 i!=-1 亦可写成 i!=0xff

for(i=5;i!=-1;i--)

j=_crol_(j,1);

                                P3=j; 

P0=DSY_CODE[Digits_of_6DSY[i]];

                                if(i==1) Dot=1;       //加小数点

                               DelayMS(2); 

                         }

                  }

   }

//T0 中断函数

void Timer0() interrupt 1

{

uchar i;

TH0=(65536-50000)/256; //恢复初值

TL0=(65536-50000)%256;

if(++Count!=2) return;

Count=0;

Digits_of_6DSY[0]++; 位累加

for(i=0;i<=5;i++)  //进位处理

{

if(Digits_of_6DSY[i]==10)

Digits_of_6DSY[i]=0;

if(i!=5) Digits_of_6DSY[i+1]++; 如果 0~4 位则分别向高一位进位

else break;  //若某低位没有进位,怎循环提前结束

}

}

 单片机C语言程序设计:100 000s 以内的计时程序
扩展阅读:用计数器中断实现100以内的按键计数程序

编辑:admin  最后修改时间:2018-05-18

联系方式

0755-82591179

传真:0755-82591176

邮箱:vicky@yingtexin.net

地址:深圳市龙华区民治街道民治大道973万众润丰创业园A栋2楼A08

Copyright © 2014-2023 颖特新科技有限公司 All Rights Reserved.  粤ICP备14043402号-4