让找料更便捷
电子元器件
采购信息平台
生意随身带
随时随地找货
一站式电子元器件
采购平台
半导体行业观察第一站
标签:
摘要: 用STC单片机的定时器精确定时,做1秒、1分、1小时的定时任务。由于本人用的是11.0592的晶体,所以时间上不是很精确。如果对定时有精确要求的,请用32.768M的晶振。串口输出采用 printf函数输出。#include"reg51.h"#include "stdio.h"#include"intrins.h" //_nop_()unsigned int tick;int hh,mm,ss;
由于本人用的是11.0592的晶体,所以时间上不是很精确。如果对定时有精确要求的,请用32.768M的晶振。
串口输出采用 printf函数输出。
#include"reg51.h"
#include "stdio.h"unsigned int tick;
int hh,mm,ss; //时:分:秒程序运行后结果如图:

代码详解:
(1)串口波特率计算
TH1=TL1=-(11059200L/12/32/9600);
由于采用11.0592晶振,所以这里是11059200L
由于采用9600波特率和计算机通信,所以采用9600
(2)串口输出为什么可以用“printf"函数?
例如: printf("S=[%d:%d:%d]\r\n",hh,mm,ss); 可以很方便的输出要的数据
原因是要自己实现printf的底层通信代码,即在你的代码里加入

这个函数的原型定义在:#include "stdio.h" 里,感兴趣的朋友,还可以把其他函数也实现。这样C51编程就可以和计算机上的C语言编程类似了。
(3)定时器初值说明:
TH0=(65536-2000)/256; 高8位
TL0=(65536-2000)%256; 低8位
(4) 定时任务

任务的调用在定时器中断里,详细见定时器中断。
void Timer0(void) interrupt 1 using 1//定时器0中断外理
希望对大家有用!错误在所难免,诸位看官自己调试把
上一篇:已经是第一篇
| 型号 | 厂商 | 价格 |
|---|---|---|
| EPCOS | 爱普科斯 | / |
| STM32F103RCT6 | ST | ¥461.23 |
| STM32F103C8T6 | ST | ¥84 |
| STM32F103VET6 | ST | ¥426.57 |
| STM32F103RET6 | ST | ¥780.82 |
| STM8S003F3P6 | ST | ¥10.62 |
| STM32F103VCT6 | ST | ¥275.84 |
| STM32F103CBT6 | ST | ¥130.66 |
| STM32F030C8T6 | ST | ¥18.11 |
| N76E003AT20 | NUVOTON | ¥9.67 |