//程序说明:串口精确延时测试。

//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延时的问题相关推荐

  1. 51c语言延时作用,51单片机C语言延时函数怎么定义和使用

    描述 51单片机C语言延时函数怎么定义 C语言定义延时函数主要通过无意义指令的执行来达到延时的目的.C程序中可使用不同类型的变量来进行延时设计.经实验测试,使用unsigned char类型具有比un ...

  2. keil4延时1秒C语言,KEIL单片机C语言精确延时值的计算

    关于单片机C语言的精确延时,网上很多都是大约给出延时值没有准确那值是多少,也就没有达到精确高的要求,而51hei给出的本函数克服了以上缺点,能够精确计数出要延时值且精确达到1us,本举例所用CPU为S ...

  3. pic单片机延时程序C语言,PIC单片机C语言延时程序和循环子程序实现方法

    PIC单片机C语言延时程序和循环子程序实现方法 很多朋友说C中不能精确控制延时时间,不能象汇编那样直观. 其实不然,对延时函数深入了解一下就能设计出一个理想的框价出来. 一般的我们都用 for(x=1 ...

  4. c语言延时系统,基于VB的单片机C语言延时程序各参数计算系统

    仪器仪表用户 doi:10.3969/j.issn.1671-1041.2011.04.013 □科研设计成果□ 基于VB的单片机C语言延时程序各参数计算系统 刘 1 锋,林 奕 2 (1.武汉理工大 ...

  5. 51单片机c语言延时计算软件,51单片机精确延时程序大集合+初值计算工具

    在论坛上看到不少不错的延时程序,整理如下共同分享: 精确延时计算公式: 延时时间=[(2*第一层循环+3)*第二层循环+3]*第三层循环+5 ;延时5秒左右 DELAY5S:PUSH   04H;2个 ...

  6. c语言延空指令,单片机C语言编程空指令产生短延时怎么办.doc

    单片机C语言编程空指令产生短延时怎么办.doc (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 7.9 积分 个人收集整理-仅供参考单片机语言编程空 ...

  7. 单片机c语言中延时函数的作用,单片机中C语言延时函数

    单片机C语言延时程序计算2009-11-02 22:15单片机C语言延时程序用C语言写出来程序非常的简练,它是一种模块化的语言,一种比汇编更高级的语言,但是就是这样一种语言也还是有它不足之处:它的延时 ...

  8. 单片机定时器精准定时_用单片机C语言精确延时(定时)的方法

    最近在忙着单片机的项目,偶尔停下来小结了一下最近的收获,还是有不少可贵的收益的. 本人在闲暇的时候对单片机C语言下的各类延时程序做了下总结.由于单片机C语言下利用软件延时不容易做到精确的定时,所以很多 ...

  9. 单片机STC89C52_C语言代码_来回流水_软件延时

    单片机STC89C52_C语言代码_来回流水_软件延时 //11.0592MHz: //50=3.3ms;80=5.2ms;100=6.5ms;1000=65ms; //5000=325ms;7800 ...

最新文章

  1. python分类算法_用Python实现KNN分类算法
  2. 使用pymysql进行数据库的增删改查
  3. Dart入门—库、泛型与异常
  4. cojs 安科赛斯特 题解报告
  5. gsonformat java代码_AndroidStudio插件GsonFormat快速实现JavaBean
  6. 计算机网络基础中职期中,中职计算机网络基础期中试卷
  7. OLDX-FC开源飞控
  8. java计算机毕业设计济南旅游网站源码+mysql数据库+系统+lw文档+部署
  9. 在任务栏中添加控件 如360小助手、QQ桌面小助手
  10. 国产计算机存储,全国产化存储AXD嵌入式存储芯片在全国产化计算机适配应用AXD安信达-国内领先的自主可控存储提供商...
  11. VS2013使用技巧汇总
  12. c语言中感叹号什么意思_感叹号的意思
  13. windows错误代码一览表
  14. 计算机更换固态硬盘方法,换SSD不重装系统的方法
  15. 深度学习在三维点云上的应用(Deep Learning for 3D Point Clouds: A Survey)
  16. 为什么祖传代码被称为「屎山」?这个回答简直太形象了
  17. 笔试题-2023-燧原-数字IC设计【个人解答版】
  18. VPS8701 电源管理(PMIC) VPS8701
  19. 泛型及其使用、Stream的方法(Java小白进阶day17)
  20. 未来十年,互联网将如何颠覆17个传统行业

热门文章

  1. Spark之wordCount合集
  2. python字典zip函数_Python zip函数及用法
  3. python一元一次方程虚数解_python – SymPy虚数
  4. 学校机房计算机缺陷,学校机房管理系统维护四种方法
  5. 正泰双十一“9连冠”,3LD开关新品喜提天猫插座类目销售TOP1!
  6. python igraph使用教程
  7. PX4模块设计之四:MAVLink简介
  8. js中的直接赋值和引用赋值
  9. 奥的斯3100电气图纸_奥的斯otis 3200电气原理图及序号与符号说明
  10. Android Studio打不开,无法启动,无反应的解决方案