历史上的今天
今天是:2025年07月06日(星期日)
2020年07月06日 | 51 单片机计数器T1计数外部脉冲
2020-07-06 来源:eefocus
/**********************************************
方法1:延时法
硬件:11.0592MHz晶振,STC89C52,RXD P1.0 TXD P1.1 T1 P3.5
波特率:9600
描述:T0用于定时,方式1,定时时间50ms,中断方式;T1用于计数,10s定时时间到后,将计数的脉冲利用模拟串口发送出去外部的脉冲是用STM8L101产生的频率为1Hz的方波。1s 来1个下降沿
**********************************************/
#include "reg52.h"
#define uchar unsigned char
sbit P1_0 = 0x90;
sbit P1_1 = 0x91;
sbit P1_2 = 0x92;
#define RXD P1_0
#define TXD P1_1
#define WRDYN 44 //写延时
#define RDDYN 43 //读延时
void Delay2cp(unsigned char i);
unsigned char num=0;
//往串口写一个字节
void WByte(uchar input)
{
uchar i=8;
TXD=(bit)0; //发送启始位
Delay2cp(39);
//发送8位数据位
while(i--)
{
TXD=(bit)(input&0x01); //先传低位
Delay2cp(36);
input=input>>1;
}
//发送校验位(无)
TXD=(bit)1; //发送结束位
Delay2cp(46);
}
//从串口读一个字节
uchar RByte(void)
{
uchar Output=0;
uchar i=8;
uchar temp=RDDYN;
//发送8位数据位
Delay2cp(RDDYN*1.5); //此处注意,等过起始位
while(i--)
{
Output >>=1;
if(RXD) Output |=0x80; //先收低位
Delay2cp(35); //(96-26)/2,循环共占用26个指令周
}
while(--temp) //在指定的时间内搜寻结束位。
{
Delay2cp(1);
if(RXD)break; //收到结束位便退
}
return Output;
}
//延时程序*
void Delay2cp(unsigned char i)
{
while(--i); //刚好两个指令周期。
}
void TimerInit()
{
TMOD=0x41; //T1,计数模式,T0,定时模式,方式1
TH0=0x4C; //T0,50ms定时初值
TL0=0x00; //T0,50ms定时初值
TH1=0x00; //计数初值清0
TL1=0x00; //计数初值清0
TR0=1; //开定时器T0
TR1=1; //开计数器T1
ET0=1; //开定时器T0中断
EA=1; //开总中断
}
void main()
{
uchar ccc;
TimerInit();
while(1){}
}
void timer0(void) interrupt 1
{
TH0=0x4C; //重新设置定时初值
TL0=0x00; //重新设置定时初值
num++;
if(num==200) //数10s内数到的脉冲
{
WByte(TH1);
WByte(TL1);
num=0; //清0
TH1=0;
TL1=0;
}
TF0=0; //软件清中断标志位
}
10秒钟数到10个脉冲,1秒1个下降沿。
上一篇:用51汇编完整写一个函数
史海拾趣
|
请问谁知道PBWorkspaces的工程目录下,release\\postproc子目录的含义?为什么包含和上一级目录同样的.bib,.reg配置文件?… 查看全部问答> |
|
请教专家:如何在.net2003种的C#里调用WinCE生成的DLL,谢谢! 我用的S3C2440开发板,在WinCE5.0中编译了成功,并且导出了针对S3C2440的SDK,该SDK安装成功后,在.net2003的模拟 工具-〉选项-〉设备工具-〉设备 中看不见S3C2440设备,请问是什么原因; 另外,我在C#中调用WinCE编译生成的DLL,在模拟器上运行时 ...… 查看全部问答> |
|
最近在做一个红外解码的程序,要求解码红外并将解码结果通过串口输出,初步构思是先不管红外的标准,直接将接收到的高低电平状态及持续时间输出,当接收到红外时,触发外部中断0,中断函数如下:void to() interrupt 0//解码输出 外部中断0{ uch ...… 查看全部问答> |
|
请问各位前辈 我想产生两相相位差90度的PWM,在中断中关掉定时器 我用了CCIE=0 ,TACCTL0 &= ~CCIE; 也不起作用 输出的波形 是同相位的 不知道为什么 请各位前辈指教 &nb ...… 查看全部问答> |
|
【设计工具】Xilinx FPGA的Fast Startup Xilinx FPGA的Fast Startup 在众多当代应用中,嵌入式系统必须满足极其苛刻的时序要求。其中之一就是启动时间——即上电后电子系统进入可操作状态所需要的时间。PCI Express®产品或汽车应用中基于CAN的电子控制单元(ECU)就是具有 ...… 查看全部问答> |




