Pulse Width Modulation脉冲宽度调制 interrupt中断 hadler 处理 buzzer蜂鸣器
定时器配置工作模式 开启那个定时器 定时多久 开始定时 溢出位
TMOD = 0x01
TL0= TH0= TR0 = 1 TF0 = 0(定时器/软件 溢出置1)
1 定时器计数器原理图一样 本质就是计数 定时器是内部震荡电路数数 每经过一次机器周期+1,计数器则是读取外部信号 针脚数据来计数
晶振 决定频率 频率决定时钟(震荡)周期,周期越小反应越快
58c52rc一般 一个 机器周期+1 = 12个时钟周期=12 /11.0592 =12000000/11059200 =1.085微妙us
寄存器相当于大脑 下面的神经 做出反应和反射;
在哪里加
1
,最大计数时间,也就是爆表了能计算多长
在TH0/1和TL0/1寄存器中加1,默认是从0开始数数,最多能数65536下,65536*1.085=71ms,累计计时71ms
如何算出
10ms
定时器的初值
就不让他从0开始数数,
10ms需要数9216下,你让他从65536-9126=56320(16进制表示为 0xDC00)开始数数 这样TL0=0x00;TH0=0xDC
关于
TCON 怎么知道爆表
TCON
寄存器的
bit5
(
TF0
)能表示爆表:当爆表的时候,硬件会修改
bit5(TF0)
位上面的数据,改成
1
(置
1
),如果不用中断,我们代码清零
怎么开始计时
TCON寄存器的bit4
,通过编程让这个位为
1
的时候,开始计时,相当于按下了闹钟
定时器使用是有很多种模式的
定时器模式寄存器:TMOD来选择定时器模式,选择工作方式1
,
TMOD
的
bit0 bit1
配置成
0 1
:16 的定时器功能(
最好按位操作不动的位置先与 要动的地方与0 例如 &1111 0000 再或 不动位或0 要动的或多少例如 | |0000 0001)
2.中断 IE中断允许寄存器(可位寻址)1打开中断 0关闭
EA打开所有中断 EX0外部中断0中断 ET0 T0溢出中断 ES串行口中断
使用中断时在定时器配置中EA = 1 ET0 =1打开这两个中断后会调用这个中断号(interrupt 1)的函数
3 PWM 脉冲宽度调制(Pulse Width Modulation)
不是接收01 而是接收一个波形 对模拟信号电平进行数字编码,也就是说通 过调节占空比的变化来调节信号 占空比 高电平所占周期的百分比
确定一个周期后 再定义一个变量 高电平占多少比例 变量++到这个比例
4 超声波
怎么让它发送波 :Trig ,给Trig端口至少10us的高电平
怎么知道它开始发了 :Echo信号,由低电平跳转到高电平,表示开始发送波
怎么知道接收了返回波 :Echo,由高电平跳转回低电平,表示波回来了
怎么算时间 :Echo引脚维持高电平的时间! 波发出去的那一下,开始启动定时器
波回来的拿一下,我们开始停止定时器,计算出中间经过多少时间
怎么算距离 :距离 =
速度 (
340m/s
)
*
时间
/2
智能垃圾桶 超声波and震动and按键控制舵机 ||或上
用宏定义来解决垃圾同一卡一卡问题(单片机一直在检测角度是多少所以一卡一卡) 宏定义的jd_mak != 时则