51单片机用定时器从某个I/O口输出一个信号,定时器的编程怎么写

如题所述

第1个回答  推荐于2016-11-07
以前的一个例子:
1,首先初始化定时器,送配置参数。
void Init_Timer2()
{
T2CON=0; //使用模式1,16位定时器 ,且工作在计时模式
TH2=(65536-45872)/256; //定时50ms
TL2=(65536-45872)%256;
EA=1; //总中断打开
ET2=1; //定时器2中断打开
TR2=1; //定时器2开关打开
}
2,写定时器中断函数
void Timer2_isr() interrupt 5
{
TF2=0;
count++;
if (count==1) //如果达到50ms,则计算一次转速并进行一次控制运算
{
TR2=0;
count=0;//清零以便于定时下一个50ms
TR0=0;//关闭计数器0,统计脉冲个数
real_speed=(256*TH0+TL0)*20/12;//50ms内脉冲个数并由此计算转速
contr_PID();
TH0=0x00; //计数器0清零,重新开始计数
TL0=0x00;
TR0=1;
TR2=1;
}
}
可以在定时器的中断函数里边写输出信号
比如让P0.0输出一个高脉冲,
void Timer2_isr() interrupt 5
{
TF2=0;
count++;
if (count==1) //如果达到50ms,则计算一次转速并进行一次控制运算
{
TR2=0;
count=0;//清零以便于定时下一个50ms
TR0=0;//关闭计数器0,统计脉冲个数

P0.0 = 1;
delay(5ms)延时函数自己写
P0.0= 0

TH0=0x00; //计数器0清零,重新开始计数
TL0=0x00;
TR0=1;
TR2=1;
}
}本回答被提问者和网友采纳
第2个回答  2014-06-28
输出什么信号?

51单片机的某个I\/O口 输出一组脉冲,求例子程序,谢谢了
} if(key10==1 && key11==1) tt1=0; }}void Timer0(void) interrupt 1 \/\/ 定时器0 PWM 控制{ TH0=(65536-2000)\/256; \/\/ 定时时间 可以修改 TL0=(65536-2000)%256; counter++; if(counter >= 16) counter = 0; \/\/ PWM 16级 可以修改 if(counter >=...

怎么51单片机定时器来模拟PWM波?
1.单计时器方案 int i;\/\/计时变量timer1(){\/\/计时器1中断函数 \/\/此处示例每隔100个最小计时周期电平变化一次,即200个最小计时周期闪烁一次 i++; if (i==200){ i=0;\/\/变量复位,完成一个周期,准备下一个周期 } else if (i==100){ LED_OFF;\/\/关灯 } else if (...

单片机怎么用c语言设置I\/O口输入或输出
P1M0=0;P1M1=255; \/\/all 推挽输出 而51单片机的所有IO引脚,在启动后默认都是1。因此,如之前没有对此引脚进行过置0操作的话,可以直接读该引脚。但为了保险起见,也为了使程序通用、可移植,最好在读取之前对此引脚置1。

怎么用c语言编程51单片机读写程序?
编程代码如下:ORG 0000H MOV DPTR,#1000H ;给源数据块地址指针DPTR赋初值 MOV P2, #20H ;给目的数据块地址指针P2和R0赋初值 MOV RO,#00H LOOP: MOVX A, @DPTR .MOVX @RO, A .INC DPTR INC RO CJNE RO,#64H, LOOP SJMP

51单片机如何同时使用定时器和计数器采集数据?
\/\/用定时计数器1作为脉冲计数器(P3.5引脚正是输入功能),定时器0作为定时器用,定时50ms产生中断 \/\/中断4次后(即0.2s)读计数器1的数据 include <reg52.h> define uint unsigned int define uchar unsigned char \/\/定义以I\/O口的功能 sbit rs=P1^3;\/\/液晶屏写选择,0命令 1数据 sbit ...

51单片机,用一个IO口模拟一个脉冲信号,然后用一个独立按键控制这个脉 ...
51单片机,用一个IO口模拟一个脉冲信号,然后用一个独立按键控制这个脉冲信号的启动与停止,可以循环操作 循环操作就是按一下IO口开始输出脉冲,再按一下脉冲停止,再按一下又开始输出脉冲。。。如此往复。脉冲信号我用定时器模拟的,但是用一个按键实在是不会控制启动和停止。初学者,困扰... 循环操作就是按一下IO...

如何编写51单片机音乐程序
要产生音频脉冲,只要算出某一音频的周期(1\/频率),然后将此周期除以2,即为半周期时间。利用半周期时间定时这个半周期时间,每当计时到后就将输出的I\/O反向,然后重复计时此半周期再对I\/O反向,就可以在I\/O脚上得到此频率的脉冲。记数脉冲值与频率的关系公式如:N=Fi\/2\/Fr。N:记数值;Fi:...

51单片机的P1.0口(IO口)输出高电平的C语言怎么写?
sbit P1.0=P1^0;\/\/P1.0声明 P1.0=1;\/\/输出高电平 P1.0=0;\/\/输出低电平

51单片机用定时器计数器测量频率
定时器1对外部脉冲计数时TMOD高4位设置应该是5 因此TMOD=0x51;以下我的频率计程序:include <reg52.h>\/\/因没用到STC12C5410专有特殊功能寄存器,此处用52或51的头文件均可 define unit unsigned int define uchar unsigned char \/\/定义以I\/O口的功能 sbit beiguang=P3^2;\/\/液晶屏背光 sbit ...

怎么用汇编语言在单片机一个I\/O输出高电平和低电平
看是什么单片机,不同的单片机汇编语言也是不同,拿51单片机来说,如果只是一个I\/O口,用SETB实现输出高电平,用CLR实现输出低电平,比如P1口,就是SETB P1.0,CLR P1.0以此类推P1.1,P1.2直到P1.7,注意如果使用P0口需接上拉电阻

相似回答