C51学习笔记 1、学习三极管的使用
三极管一共有 3 个极 , 从图 3-6 来看 , 横向左侧的引脚叫做基极(base) , 中间有一个箭头 , 一头连接基极 , 另外一头连接的是发射极 e() , 那剩下的一个引脚就是集电极 c() 。箭头朝内 PNP , 导通电压顺箭头过 , 电压导通 , 电流控制 。
只要箭头外侧比箭头内侧电压高0.7V , e和c级就会导通 。也就是通过b级控制ec级 , 并且可以用低电压去控制高电压如下图使用NPN三极管:
当IO输出高电平 , OUT输出0V , IO输出低电平 , OUT输出12V 。
同时ec间电流由eb间电流控制 Ieb*β=Iec . 特殊值:红色贴片LED压降约为2V , 硅三极管导通时be间压降约为0.7V 。
2、学习定时器
时钟周期T 是时序中最小的时间单位 , T=1/时钟源频率 。开发板上用的晶振11.0592M , 那么T=1/ 秒 。C51的机器周期一般为12个始终周期 , 12/ 秒 。定时器内部有一个寄存器 , 每过一个机器周期寄存器的值就会加一 。可以通过该寄存器来知晓经过的时间 。
C51有以下重要寄存器
TCON:控制寄存器 TMOD:模式寄存器
TMOD可以用来确定寄存器的工作模式 , 通常使用定时器模式1和模式2.
模式1是 THn 和 TLn 组成了一个 16 位的定时器 , 计数范围是 0~65535 , 溢出后 , 只 要不对 THn 和 TLn 重新赋值 , 则从 0 开始计数 。模式 2 , 是 8 位自动重装载模式 , 只有 TLn 做加 1 计数 , 计数范围 0~255 , THn 的值并不发生变化 , 而是保持原值 , TLn 溢出后 , TFn 就直接置 1 了 , 并且 THn 原先的值直接赋给 TLn , 然后 TLn 从新赋值的这个数字开始计数 。这个功能可以用来产生串口的通信波特率 。
C/T = 0 的时候 , 一个机器周期 TL 就会加 1 一次 , C/T =1 的时候 , T0 引脚即 P3.4 引脚来一个脉冲 , TL 就加 1 一次 , 这也就是计数器功能 。
使用步骤:
第一步:设置特殊功能寄存器 TMOD , 配置好工作模式 。
第二步:设置计数寄存器 TH0 和 TL0 的初值 。
第三步:设置 TCON , 通过 TR0 置 1 来让定时器开始计数 。
第四步:判断 TCON 寄存器的 TF0 位 , 监测定时器溢出情况 。
用定时器定时时间:设一个机器周期T , 计数次数x ,假设定时0.02S ,
则x = 0.02/Tx*12/=0.02 , 得到 x= 18432 。那么初值 y = 65536 - 18432 = 47104, 16进制是 , 也就是 TH0 = 0xB8 , TL0 = 0x00 。
3、学习中断
以下是C51的一些中断寄存器
在触发中断时 , 会进入一个中断函数 , 需要使用 X 来“绑定”中断函数 。X为对应的中断部件的编号 。如void ()1 绑定了该函数为定时器0中断函数 。
抢占优先级
这些位中被赋1的位能够抢占未赋1的中断 。
使用外部中断的例子:
//中断初始化
void ()
EX0 = 1; //开启外部中断0
IT0 = 1; //中断触发0:下降沿触发 1:高电平触发
EA = 1; //开启总中断
PX0 = 1; //将外部中断的优先级提高
//外部0中断服务函数
void int0()0
uchar j = 0;
for(j = 0;j>8); //高电平重载值拆分为高低字节
= ( char)high;
LowRH = ( char)(low>>8); //低电平重载值拆分为高低字节
LowRL = ( char)low;
TMOD &= 0xF0; //清零T0的控制位
- 齐齐哈尔天气预报
- 无锡、鼋头渚、灵山等。太湖中国最大的淡水湖之一被誉为江南明珠 太湖中国之最
- 郑州“7.20”特大暴雨灾害调查报告出炉!解读“重面子、轻里子” 郑州720历史之最
- 陪我去青康藏高原
- 岗位内推 | 小红书商业广告部门招聘广告算法、广告系统开发工程师
- OpenCV学习笔记--第一个OpenCV程序:图片读写显示
- 按下亮 松开灭 c语言程序,单片机用c语言,按钮控制一个LED灯,要求按下松开
- 马术表演、环球飞车、惊险杂技……在滨海新区看顶级马戏节 飞奔闯关最快吉尼斯记录
- 引领六项世界之最,解决十大世界级技术难题,他是滇中引水总工程师、昆明瀑布公园设计者 世界之最的瀑布
- 稀奇|天津惊现“神秘生物”!外貌、性情世界罕见! 动植物世界之最