sbit D2=P2^6;

sbit D3=P2^7;

/*定义P1口各管脚*/

sbit beep=P1^0;

sbit L0=P1^5;

sbit L1=P1^4;

sbit L2=P1^3;

sbit L3=P1^2;

uchar data BUFFER[4]={0,0,0,0}; //显示缓冲区(依次从低位到高位,共四位数码管)

uchar data CLOCK[4]={0,0,0,0}; //存放时钟时间(依次是百分秒,秒,分,时)

uchar data SECOND[3]={0,0,0}; //存放秒表时间(依次时百分秒,秒,分)

uchar data SEVER[4]={0,0,0,0}; //存放倒计时时间(依次是百分秒,秒,分,时)

/*定义程序运行状态*/

uchar data STATE=0;

/*STATE=0;时钟运行*/

/*STATE=1;时钟分调整*/

/*STATE=2;未定义状态,可添加*/

/*STATE=3;时钟时调整*/

/*STATE=4;倒计时分调整*/

/*STATE=5;倒计时时调整*/

/*STATE=6;秒表*/

/*STATE=7;倒计时运行*/

/*定义辅助计时全局变量*/

uchar m=60;

/*共阳数码管显示“0”-“9”,“-” */

uchar code TABLE[]={0xC0,0xf9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x98,0xbf};

/*自定义子函数*/

void display(); //显示函数

void delay(); //显示延时函数

void intsvr(); //调整时间时加1子函数

void delay10ms(); //延时函数

/*主函数体*/

void main(void)

{

EA=1;ET0=1; //开总中断源,开T0中断

TMOD=0x61; //T1方式2计数,T0方式1计时

TH0=-9460/256;TL0=-9460%256; //初始化计数器初值

TH1=0xff;TL1=0xff;

T2CON=0;TH2=-9452/256;TL2=-9452%256;

K0=1;K1=1;K2=1; //初始化控制状态位

STATE=P2&0x07;

for(;;)

{

switch(STATE)

{

case 1: //时钟分调整程序

{

TR0=0;ET0=0;EX0=0;TR2=0; //关闭定时器,时钟停止运行,同时关闭外中断IT0

L3=0;L1=0;L2=0;L0=1;

intsvr(); //调用加1函数

BUFFER[0]=CLOCK[2]%10; //数码管显示分钟个位

BUFFER[1]=CLOCK[2]/10; //数码管显示分钟十位

BUFFER[2]=10; //显示“-”

BUFFER[3]=10; //显示“-”

}break;

case 3: //时钟时调整程序

{

TR0=0;ET0=0;EX0=0;TR2=0; //关闭定时器,时钟停止运行

L3=0;L1=0;L2=0;L0=1;

intsvr(); //调用加1函数

BUFFER[0]=CLOCK[2]%10; //数码管显示分钟个位

来源;21ic

关于控制,MCU就介绍完了,您有什么想法可以联系小编。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查