⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ex5_6.c

📁 单片机应用技术(C语言版)程序源代码.rar
💻 C
字号:
//程序:ex5_6.c
//功能:00~59简易秒表程序
#include <reg51.h>
unsigned char msec,sec;		//定义msec为50ms计数变量,sec为秒变量
void delay(unsigned char i);	//延时函数参见任务1程序ex1_1.c
//函数名:T0_INT
//函数功能:定时器0中断函数,定时50ms到,自动执行该函数,判断是否中断20次
//形式参数:无
//返回值:无
void T0_INT(void) interrupt 1	//定时器0中断类型号为1
{
   TH0=0x3c;			//50ms定时初值
   TL0=0xb0;
   msec++;			//中断次数增1
   if(msec==20)			//中断次数到20次吗?
   {
      msec=0;			//是,1秒计时到,50ms计数单元清零
      sec++; 			//秒单元加1
      if(sec==60)		//到60秒吗?
      {
	 sec=0; 		//是,秒单元清零
      }
   }
}
void main()			//主函数
{
   unsigned char led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};	//定义数字0~9字型显示码
   unsigned char temp;
   TMOD=0x01;			//定时器0工作方式1
   TH0=0x3c;			//50ms定时初值
   TL0=0xb0;
   EA=1;			//开总中断
   ET0=1;			//开定时器0中断
   P3=0xff;			//P3口做输入
   while(1) {
      P2=0x01;			//选中P2.0控制的数码管
      P1=led[sec%10];		//显示秒个位
      delay(10);
      P2=0x02;	 		//选中P2.1控制的数码管
      P1=led[sec/10];		//显示秒十位
      delay(10);
      temp=~P3;			//读入P3口引脚状态并取反
      temp=temp&0x2c;		//屏蔽掉无关位,保留三位按键状态00x0xx00
      if(temp==0)		//判断有无按键按下
      {
         if(temp==0x04)		//按下停止键
         TR0=0;			//停止计数
	 if(temp==0x08)		//按下启动键
         TR0=1;			//启动计数
	 if(temp==0x20)		//按下复位键
           { TR0=0;sec=0;msec=0; }
      }   
            }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -