stc1t单片机C语言延时,STC12C5A60S2延时的问题
//程序说明:串口精确延时测试。
//Notice:以下代码只针对STC1t系列8位单片机
// 延时精确函数参数值"整定“
//也可以经过修改后用于at89s51等 51单片机。
//修改方法自己试一试。注解已经很详细喔。老完全抄的话没得意思了。
//作者:bg8wj
//-------------------------------------------------
#include "STC12C5A.h" //需要用到特殊功能寄存器要加载stc专用头文件
#include "STRING.h" //需要使用测定字符串长度函数需要加载
int a,b,ai,bi;//ai,bi作为定时器定时结束时暂存数,用于延时结束后串口输出
unsigned char buffer[8];//串口输出时候缓冲数据区。便于以后加载lcd显示
/*******************************************************
不会写大延时函数的TX,请用使用小精灵生成一个 待测函数
k值乱取一个,最好过百。输出数据取4位:”千 百 十 个“
十进制数输出代表循环几次。
****************************************************/
//----------------待测试函数----------------------
void delay2ms500us(int k )//误差 0.000000000000us
{
for(a=0;a<30000;a++)
for(b=0;b
}
/*******************************************************
自己到老妖的网上下载一个波特率计算软件可以直接生成以下
串口初始化代码
****************************************************/
//-----------------串口初始化---------------------
void UartInit(void) //9600bps@22.1184MHz
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位数据,可变波特率
BRT = 0x70; //设定独立波特率发生器重装值
AUXR |= 0x04; //独立波特率发生器时钟为Fosc,即1T
AUXR |= 0x01; //串口1选择独立波特率发生器为波特率发生器
AUXR |= 0x10; //启动独立波特率发生器
ES=1; //允许串口1中断
}
/*******************************************************
定时器0初始化化,不会自己写的TX还是小精灵生成。
记住喔,频率选项;单片机类型搞对。
1t单片机多的去了,不是1t==stc 而是stc从属于{1t}
12t不说啦。4t、6t的一样。不懂得TX好好看看datasheet。
****************************************************/
void InitTimer0(void)//22.1184MHz--2500uS=2.5ms
{ //设置不同的时间,可以测试stc单片机内部延时参数
TMOD = 0x01; //T0定时器
TH0 = 0x28; //TH0初值
TL0 = 0x00; //TL0初值
ET0 = 1; //自己看看头文件内定义
TR0 = 1; //使能
EA=1; //使能
}
/************************************************************
向串口uart1发送一个字符
*************************************************************/
void send_char_com(unsigned char ch)
{
SBUF=ch;
while(TI==0);
TI=0;
}
/************************************************************
向串口uart1发送一个字符串,strlen为该字符串长度
*************************************************************/
void send_string_com(unsigned char *str)
{
unsigned int k=0;
do
{
send_char_com(*(str + k));
k++;
} while(k < strlen(str));
}
//---------------清除字符缓冲区-------------
void clearbuffer(void)
{
unsigned char i;
for(i=0;i<8;i++)
{
buffer[i]=0;
}
}
//--------------------------------------------------------------------------
void main()
{
AUXR = AUXR|0x80; // T0, 1T Mode
InitTimer0();
UartInit();//初始化uart1,波特率9600,n8bit
TR0 = 1;//开启定时
EA=1;
delay2ms500us(40);//延时
send_string_com("delay time test:");
buffer[0]=(0x30+ai/10000);
buffer[1]=(0x30+(ai%10000)/1000);
buffer[2]=(0x30+(ai%1000)/100);
buffer[3]=(0x30+(ai%100)/10);
buffer[4]=(0x30+ai%10);
buffer[5]=0x0d;
buffer[6]=0x0a;
buffer[7]='\0';
send_string_com("a value:");
send_string_com(buffer);
clearbuffer();
buffer[0]=(0x30+bi/10000);
buffer[1]=(0x30+(bi%10000)/1000);
buffer[2]=(0x30+(bi%1000)/100);
buffer[3]=(0x30+(bi%100)/10);
buffer[4]=(0x30+bi%10);
buffer[5]=0x0d;
buffer[6]=0x0a;
buffer[7]='\0';
send_string_com("b value:");
send_string_com(buffer);
while(1);
}
//-------------定时器0中断服务函数----------
void Timer0(void) interrupt 1 using 3
{
ai=a; // 暂存延时函数的i和j
bi=b; //
TR0=0;
}
//-------------uart1中断服务函数----------
void UART1_Interrupt(void) interrupt 4 using 1
{
if(RI)
{
RI = 0;
//add your code here!
}
else
TI = 0;
}
stc1t单片机C语言延时,STC12C5A60S2延时的问题相关推荐
- 51c语言延时作用,51单片机C语言延时函数怎么定义和使用
描述 51单片机C语言延时函数怎么定义 C语言定义延时函数主要通过无意义指令的执行来达到延时的目的.C程序中可使用不同类型的变量来进行延时设计.经实验测试,使用unsigned char类型具有比un ...
- keil4延时1秒C语言,KEIL单片机C语言精确延时值的计算
关于单片机C语言的精确延时,网上很多都是大约给出延时值没有准确那值是多少,也就没有达到精确高的要求,而51hei给出的本函数克服了以上缺点,能够精确计数出要延时值且精确达到1us,本举例所用CPU为S ...
- pic单片机延时程序C语言,PIC单片机C语言延时程序和循环子程序实现方法
PIC单片机C语言延时程序和循环子程序实现方法 很多朋友说C中不能精确控制延时时间,不能象汇编那样直观. 其实不然,对延时函数深入了解一下就能设计出一个理想的框价出来. 一般的我们都用 for(x=1 ...
- c语言延时系统,基于VB的单片机C语言延时程序各参数计算系统
仪器仪表用户 doi:10.3969/j.issn.1671-1041.2011.04.013 □科研设计成果□ 基于VB的单片机C语言延时程序各参数计算系统 刘 1 锋,林 奕 2 (1.武汉理工大 ...
- 51单片机c语言延时计算软件,51单片机精确延时程序大集合+初值计算工具
在论坛上看到不少不错的延时程序,整理如下共同分享: 精确延时计算公式: 延时时间=[(2*第一层循环+3)*第二层循环+3]*第三层循环+5 ;延时5秒左右 DELAY5S:PUSH 04H;2个 ...
- c语言延空指令,单片机C语言编程空指令产生短延时怎么办.doc
单片机C语言编程空指令产生短延时怎么办.doc (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 7.9 积分 个人收集整理-仅供参考单片机语言编程空 ...
- 单片机c语言中延时函数的作用,单片机中C语言延时函数
单片机C语言延时程序计算2009-11-02 22:15单片机C语言延时程序用C语言写出来程序非常的简练,它是一种模块化的语言,一种比汇编更高级的语言,但是就是这样一种语言也还是有它不足之处:它的延时 ...
- 单片机定时器精准定时_用单片机C语言精确延时(定时)的方法
最近在忙着单片机的项目,偶尔停下来小结了一下最近的收获,还是有不少可贵的收益的. 本人在闲暇的时候对单片机C语言下的各类延时程序做了下总结.由于单片机C语言下利用软件延时不容易做到精确的定时,所以很多 ...
- 单片机STC89C52_C语言代码_来回流水_软件延时
单片机STC89C52_C语言代码_来回流水_软件延时 //11.0592MHz: //50=3.3ms;80=5.2ms;100=6.5ms;1000=65ms; //5000=325ms;7800 ...
最新文章
- python分类算法_用Python实现KNN分类算法
- 使用pymysql进行数据库的增删改查
- Dart入门—库、泛型与异常
- cojs 安科赛斯特 题解报告
- gsonformat java代码_AndroidStudio插件GsonFormat快速实现JavaBean
- 计算机网络基础中职期中,中职计算机网络基础期中试卷
- OLDX-FC开源飞控
- java计算机毕业设计济南旅游网站源码+mysql数据库+系统+lw文档+部署
- 在任务栏中添加控件 如360小助手、QQ桌面小助手
- 国产计算机存储,全国产化存储AXD嵌入式存储芯片在全国产化计算机适配应用AXD安信达-国内领先的自主可控存储提供商...
- VS2013使用技巧汇总
- c语言中感叹号什么意思_感叹号的意思
- windows错误代码一览表
- 计算机更换固态硬盘方法,换SSD不重装系统的方法
- 深度学习在三维点云上的应用(Deep Learning for 3D Point Clouds: A Survey)
- 为什么祖传代码被称为「屎山」?这个回答简直太形象了
- 笔试题-2023-燧原-数字IC设计【个人解答版】
- VPS8701 电源管理(PMIC) VPS8701
- 泛型及其使用、Stream的方法(Java小白进阶day17)
- 未来十年,互联网将如何颠覆17个传统行业
热门文章
- Spark之wordCount合集
- python字典zip函数_Python zip函数及用法
- python一元一次方程虚数解_python – SymPy虚数
- 学校机房计算机缺陷,学校机房管理系统维护四种方法
- 正泰双十一“9连冠”,3LD开关新品喜提天猫插座类目销售TOP1!
- python igraph使用教程
- PX4模块设计之四:MAVLink简介
- js中的直接赋值和引用赋值
- 奥的斯3100电气图纸_奥的斯otis 3200电气原理图及序号与符号说明
- Android Studio打不开,无法启动,无反应的解决方案