#include "public.h" #include "lcd1602.h" #include "stdio.h" sbit led=P2^6; int s=0;//定时器计数 unsigned char led_t=0; unsigned int alarm_s=0;//当前时间 unsigned int alarm_m=0; unsigned int alarm_h=0; unsigned char clock_s=0;//闹钟时间 unsigned char clock_m=0; unsigned char clock_h=0; unsigned char buf[2]; void delay(unsigned int i)//属于read 1ms 延时 { unsigned int k; while (i--) for(k=0;k<110;k++); } void side() { unsigned char buf_0[3]; buf_0[0]=buf[1]; buf_0[1]=buf[0]; buf[0]=buf_0[0]; buf[1]=buf_0[1]; } void time0 () interrupt 1 //T0计时器中断程序 一次50ms { TH0 = (65536-46483)/256; TL0 = (65536-46483)%256;//重新装载50ms if(led_t>=10)//led闪烁 { led=!led; led_t=0; } led_t++; if(s==20)//计时满1s { alarm_s++; //当前时间 if(alarm_s==60) { alarm_m++; sprintf(buf,"%d",alarm_m); lcd1602_show_string(11,0,buf); if(alarm_m==60)//向小时进位 { alarm_h++; sprintf(buf,"%d",alarm_h); lcd1602_show_string(8,0,buf); alarm_m=0; } alarm_s=0; } s=0; } s++; } void main() { char a; a=1; TMOD=0x01;//定时器工作方式1 TH0 = (65536-46483)/256; TL0 = (65536-46483)%256;//T0定时器初值装载 计时50ms EA=1;//总中断允许 ET0=1;//定时器T0允许中断 TR0=1; lcd1602_init();//LCD1602初始化 lcd1602_show_string(0,0,"Time:");//第一行显示 lcd1602_show_string(8,0,"00:00"); lcd1602_show_string(0,1,"Clock:");//第二行显示 while(1) { } }
时间: 2023-07-15 08:10:08 浏览: 166
VS Code C/C++环境配置教程(无法打开源文件“xxxxxx.h” 或者 检测到 #include 错误,请更新includePath) (POSIX API)
这段代码是一个运行在单片机上的时钟程序,使用了定时器中断来实现计时器功能。主要的变量包括当前时间和闹钟时间,以及一个计数器s来实现1秒的计时。程序的主要逻辑是在定时器中断程序中对当前时间进行更新,并且每一秒更新LCD1602屏幕上的显示内容。同时,程序还通过控制LED灯的闪烁来实现一个简单的提示功能。这段代码需要在单片机开发环境下编译和烧录才能运行。
阅读全文