/*-------------------------------------------------------*/
/* -------------author: robinson_911 -------------------------*/
/* -------------date:2014年2月 -------------------------*/
/* -------------content:关于串口 定时器程序 -----------*/
// 在22.1184MHZ下,通过定时器0,每1s通过串口发送数据
/*-------------------------------------------------------*/
//#include "reg52.h"
#include "STC_NEW_8051.H"
typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;
/************* 本地变量声明 **************/
u16 JumpAddress,a=0;
u8 xdata RxBuffer[64];
u8 ReCount=0, i;
u8 RxCounter=0;
/************* 本地哈函数声明 **************/
void push_pull();
void Serial_Initinal();
void sendchar(u8 p);
void sendstring(u8 *p);
void dmsec (u16 count);
void delay_1ms(u16 count);
void Timer0Init(void);
void Timer1Init(void);
void init() ;
void main()
{
push_pull();
Serial_Initinal();
Timer0Init();
while(1)
{
i++;
}
}
void receive(void) interrupt 4
{
if(RI)
{
RI=0;
RxBuffer[RxCounter++]=SBUF;
}
}
void Timer0(void) interrupt 1
{
TL0 = 0x9A; //设置定时初值
TH0 = 0xA9; //设置定时初值
a++;
if(a==1000)
{
a=0;
sendstring("delay 1s ");
}
}
/*发送一字节数据/*/
void sendchar(u8 ch)
{
SBUF=ch;
while(!TI);//
TI=0;
}
void sendstring(u8 *p)
{
while(*p)
{
sendchar(*p++);
}
}
/*实现功能:进行毫秒延时*/
void dmsec (u16 count)
{
u16 i;
while (count)
{
i =230;
while (i>0) i--;
count--;
}
}
/***1T 下大概的ms精确按时****/
void delay_1ms(u16 count)
{
u16 i,j;
for(i=0;i<8*count;i++)
{
for(j=0;j<225;j++){;}
}
}
void push_pull()
{
P0M1=0X00; //STC12C5A60s2,端口改为强推挽
P0M0=0XFF;
P1M1=0X00;
P1M0=0XFF;
P2M1=0X00;
P2M0=0XFF;
P3M1=0X00;
P3M0=0XFF;
P4M1=0X00;
P4M0=0XFF;
}
//定时器1作为波特率发生器用
void Serial_Initinal()
{
//波特率设置
SCON = 0x5a; //8 bit data ,no parity bit
TMOD = 0x21; //设置定时器1为工作方式2
TH1 = TL1 = 0xfa; //波特率9600
TR1 = 1; //T1 start running
EA=1;
ES=1;
}
void Timer0Init(void) //1毫秒@22.1184MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TL0 = 0x9A; //设置定时初值
TH0 = 0xA9; //设置定时初值
ET0=1;
TR0 = 1; //定时器0开始计时
}
波特率和定时时间值计算,可以通过STC_ISP计算得出
上一篇:51学习之定时器中断的两种方式——查询和中断
下一篇:C51 延时程序两种方案
设计资源 培训 开发板 精华推荐
- AOZ1212DI-EVB,使用AOZ1212DI DC-DC单步降压转换器的评估板
- 2021-LED板
- SD188ES/SD188EM,演示板是 Am188ES 或 Am188EM 微控制器的独立评估平台
- TB62261FTAG 相位/串行输入两相步进电机驱动器评估板
- 使用 ROHM Semiconductor 的 BU4931 的参考设计
- 使用 Diodes Incorporated 的 AP131 的参考设计
- LTC4069-4.4 的典型应用 - 具有 NTC 热敏电阻输入的 2 -2 DFN 独立 750mA 锂离子电池充电器
- LT8335IDDB 4V 至 16V 输入、-5V 反相转换器的典型应用电路
- AD5344 并行接口、四路电压输出、12 位 DAC 的典型应用
- TDA7577BLV 2 x 75 W 双桥功率放大器的典型应用,具有 I2C 完整诊断和“启动-停止”配置文件(6 V 操作)
- TI E2E中文社区年终回馈,15 块 CC3200-LAUNCHXL 开发板免费申请中……测评赢好礼喽!
- #Micropython大作战#第二弹:发表mciropython原创教程赢好礼!
- 免费申请TI 样片,晒单赢好礼!
- Keysight 有奖直播 | 基于数字孪生的软件工具,助力射频子系统验证
- 泰克 MSO6B 探索营:设计资源集锦
- 报名Keysight感恩月,天天抽示波器、直流电源、万用表……
- 【EEWORLD第三十四届】2012年01月社区明星人物揭晓!
- 与PI一起探索 LinkSwitch-TN2 的秘密看视频答题赢好礼!
- 有奖调查:ST MEMS 传感器论坛用户问卷调查,参与有惊喜
- iOS 15.0.2正式版修复1个零日漏洞,但并未感谢安全研究员
- vivo新机过3C认证,消息称将首发高通骁龙898+全新形态
- 小米11系列推MIUI 12.5.13.0稳定版:更新谷歌9月安全补丁
- realme真我GT Neo2T预热:搭65W智慧闪充,19日发布
- Nothing融资5000万美元 并宣布和高通达成合作
- 魅族17、18、18s系列与18X将于11月推送Flyme 9.2
- vivo T系列首款机型T1x上架电商,或近期发布
- 谷歌发Android 12 CCD兼容性定义文档:后摄12MP起,最小6GB内
- 摩托罗拉Moto E40海外发布:虎贲T700芯片/90Hz屏,价格812元
- 华为nova 9/Pro手机鸿蒙HarmonyOS 2.0.1版本推送