/*------------------------------
Function: generate pulse signal
Author: Zhang Kaizhou
Date: 2019-5-15 22:50:43
------------------------------*/
#include #define uchar unsigned char
sbit output = P1^0;
uchar period = 250;
uchar high = 50;
uchar tcount = 0;
void timer0() interrupt 1 using 1
{
TH0 = (65536 - 10000) / 256;
TL0 = (65536 - 10000) % 256;
tcount++;
if(tcount == high)
{
output = 0;
}else if(tcount == period){
tcount = 0;
output = 1;
}
}
void main()
{
TMOD = 0x01; // set Timer1, working at mode 1(16 bit timer)
TH0 = (65536 - 10000) / 256; // set initial value
TL0 = (65536 - 10000) % 256;
EA = 1; // open global interrupt
ET0 = 1; // open Timer0 interrupt
TR0 = 1; // start Timer0
while(1);
}
关键字:51单片机 内部定时器 脉冲信号
引用地址:
51单片机内部定时器使用
推荐阅读最新更新时间:2024-11-09 06:56
C51单片机入门——按键篇
按键的抖动现象 按键按下时都会发出一声响,虽然有的按键声音很轻微,但这都是金属导体碰撞产生的震动;——称这种现象为:按键的抖动。 如果不对按键的抖动进行处理,按键就会对系统电路或程序产生意外的干扰。因此,我们要对按键进行“消抖”。 按键按下后抬起有效 利用延时函数,按键key1按下后抬起有效,控制LED闪烁; #include reg51.h sbit key1 = P1^4; //实验板上key1 sbit LED0 = P0^0; unsigned char key1_down; void delay(unsigned int delay_time) { unsigned int j = 0; for(;
[单片机]
51单片机学习笔记3 -- 按键输入检测
1.按键原理图绘制 51开发板的原理图如下 按原理图绘制电路图 2.按键输入检测 1.按键软件消抖 按键一般是利用机械触点的闭合、断开作用,由于机械触点的弹性作用,在其闭合、断开瞬间均存在抖动过程,抖动时间一般在5 -10ms,稳定闭合时间由操作人员的按键动作决定,一般为零点几秒到几秒。 为了保证单片机对一次闭合,仅作一次按键输入操作,必须在编程时候编写必要的程序代码(小段延时)来去除抖动影响,称键盘软件消抖。 2.按键操作电平变化 在上面讲到了软件消抖是为了准确识别单次按键操作,理想中的按键按下的电平输入是直接的高低电平切换,但实际上在按下及松开按键的瞬间,输入电平都会在高低电平中间产生抖动,可参考如下波形图
[单片机]
51单片机--外部中断1控制led亮灭
#include reg51.h typedef unsigned int u16; typedef unsigned char u8; sbit k4=P3^3;//P33是外部中断1的引脚,按键的一个引脚和中断引脚相连 sbit led1=P2^1; /******************************************************************************* * 函 数 名 : delay * 函数功能 : 延时函数,i=1时,大约延时10us ***************************************************
[单片机]
【51单片机STC89C52】IO口模拟PWM控制SG90舵机
一、PWM PWM ,英文名 Pulse Width Modulation ,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进 行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编码,也就是说通 过调节占空比的变化来调节信号、能量等的变化,占空比就是指在一个周期内,信号处于高电平的 时间占据整个信号周期的百分比,例如方波的占空比就是50%. 占空比 : 一个周期内,高电平占据时长的百分比 STC89C52没有集成PWM功能,可以通过IO口软件模拟,相对硬件PWM来说精准度略差 二、关于舵机控制原理 舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的
[单片机]
8051单片机-校验和
【例子】通过校验和的方式实现数据传输与控制,例如控制LED灯、蜂鸣器、发送数据到上位机。 由于是数据传输与控制,需要定制一个结构体、共用体方便数据识别,同时增强可读性。从数据帧格式定义中可以定义为“PKT_SUM_EX”类型。 识别数据请求什么操作可以通过以下手段来识别:识别数据头部1、数据头部2,操作码。当完全接收数据完毕后通过校验该数据得出的校验值与该数据的尾部的校验值是否匹配。 若匹配,则根据操作码的请求进行操作;若不匹配则丢弃当前数据帧,等待下一个数据帧的到来。 结构体定义: /*使用结构体对数据包进行封装 *方便操作数据 */ typedef struct _PKT_SUM { U
[单片机]
51单片机的片内RAM和片外RAM的区别
前边介绍单片机资源的时候,我们提到过 STC89C52 共有 512 字节的 RAM,是用来保存数据的,比如我们定义的变量都是直接存在 RAM 里边的。但是单片机的这 512 字节的 RAM在地位上并不都是平等的,而是分块的,块与块之间在物理结构和用法上都是有区别的,因此我们在使用的时候,也要注意一些问题。 51 单片机的 RAM 分为两个部分,一块是片内 RAM,一块是片外 RAM。标准 51 的片内 RAM 地址从 0x00H~0x7F 共 128 个字节,而现在我们用的 51 系列的单片机都是带扩展片内 RAM 的,即 RAM 是从 0x00~0xFF 共 256 个字节。片外 RAM 最大可以扩展到 0x0000~0x
[单片机]
8051单片机中访问int中字节的方法
在使用单片机中,unsigned int 占2个字节,unsigned char 占一个字节。而单片机是实行的字节寻址。16字节的bit寻址实在是不好用, 不好用在不能建数组。 在实际的开发过程中,要使用DPTR,还有定时器的TL0,TH0 的高低字节等。 需要我们先定义一个int类型的可以用来赋值什么的比较自然。 然后和0xff与得到低8,一个字节。可以放入DPTR的低字节或定时器的低字节。 将int类型的左移8位后,再和0xff与得到int的高8位,一个字节,移入到DPTR的高字节或定时器的高字节。 这样很麻烦。 实际上,我们可以通过struct和union方便的直接一步到位的得到int 类型的高字节和低字节,同时也能观察到5
[单片机]
8051单片机-模拟串口
传统的8051系列单片机一般都配备一个串口,而STC89C52RC增强型单片机也不例外,只有一个串口可供使用,这样就出问题了,假如当前单片机系统要求二个串口或多个串口进行同时通信,8051系列单片机只有一个串口可供通信就显得十分尴尬,但是在实际的应用中,有两种方法可以选择。 方法1:使用能够支持多串口通信的单片机,不过通过更换其他单片机来代替8051系列单片机,这样就会直接导致成本的增加,优点就是编程简单,而且通信稳定可靠。 方法2:在IO资源比较充足的情况下,可以通过IO来模拟串口的通信,虽然这样会增加编程的难度,模拟串口的波特率会比真正的串口通信低一个层次,但是唯一优点就是成本上得到控制,而且通过不同的IO组合可以实现
[单片机]