c语言单片机管脚定义,单片机-IO管脚
希望对初学者提供帮助,我采用的C语言。有人说C语言容易比较容易掌握,汇编比较难。这种说法其实只是针对初学者。对于希望提高或者达到一定水平来说其实都有一样。我有个同事使用C语言设计一个多任务切换的程序,发现很难完成。但是使用汇编编写程序的程序员就比较容易。因为他对内存结构、堆栈分配非常清楚所以就比较容易实现。特别是做精确延迟,汇编显得非常有优势。在有些项目中C与汇编要嵌套使用,这就对程序员的要求非常高。
我的意思是,如果您希望以后将编写嵌入式软件作为一个工作手段。如果您的同事中有位汇编高手,那您就做汇编吧。有位这是一个绝好的机会。有人一辈子也不会有!
但是C语言比较易学易用,我们就以C入门吧。
IO就输入/输出的意思。单片机通过IO管脚与外界其他电路通讯。AT89S52应该是标准单片机,具有P0-P4合计4组IO,每组IO有8个管脚。以后一些其他厂家基本按照这个规范生产产品。我们随便找一个C51的单片机看看。
这就一个标准的双列直插的单片机。我们稍微观察一下看到1-8是P0端口,10-17是P3管脚,
40-32是P0管脚,28-21是P2管脚。4组管脚都可以做为普通的IO使用,也就是输出高低电平。或者读取外界电平。 其中P3管脚可以作为其他第二功能使用。
C51的P1-P3 IO是准双向/弱上拉工作模式,这句我们来分析一下,“准双向”的意思他可以作为IO管脚使用。“准”的意思是不能同时作为输入、输出使用。“弱上拉”也就是说外部电路如果希望他置低,需要比较大的电流。我理解就是这样,具体大家再查查资料吧。
P0管脚是开漏输出的,只能输出低电平,如果需要输出高电平,需要在外部使用上拉。但是P0管脚具有强灌电流能力,也就是吸收电流的能力。
XTAL1、XTAL2是晶振管脚。按照以下搭建的电路可以使单片机工作起来。
在有些单片机EA必须接高电平,有些单片机已经内部做了上拉就不需要拉。C1、R1是为了在上电时提供一个短时间的高电平。在系统上电瞬间C1是导通的,相当于导线,RST通过电阻接地。所以RST现在是高电平。随着 C1充电通过R1的电流越来越小。知道最后完全不导电。RST就成了低电平。系统就开始稳定了工作了。根据单片机复位需要的时间设计该电路。
C2、C1、R2 与晶振形成了竞争电路,一般情况下厂家会提供这几个元器件的选择。所以在初期不必太关心,只需参考别人电路即可。C5、C6是滤波电容。
如果C51已经烧写了程序, 按照上图搭建电路后系统即可工作,
这个电路就比较丰富了,如果按照以上硬件电路。我们可以通过P1口完成流水灯实验、定时器实验、串口实验。 因为LED实验很简单,参考的例子非常多。我们按照上图硬件今天随手写几个。
sbit LED0 = P1^0;
void main( )
{
P1 = 0xFF;
LED0 =0;
while(1)
{
}
}
以上代码编译、下载运行后P1^0控制的LED会亮。 我们逐行分析。
sbit LED0 = P1^0; 声明了LED0变量,LDE0是一个位。sbit并不是标准C语言的类型。只有在单片机编程时使用。
main 是主函数,也就是程序的入口。PC指针初始化位置指向他。
P1 = 0XFF; P1的输出寄存器置1,也就是输出低电平。所有P1管脚LED熄灭。
while(1){ } 在单片机编程中非常常用。防止程序执行结束后,出现不可预知的结果。
void delay( )
{
unsigned int m,n;
for(m=0;m<500;m++)
for(n=0;n<500;n++);
}
void main( )
{
P1 = 0xFF;
LED0 =0;
while(1)
{
delay( ) ;
LED0 =0;
delay( ) ;
LED0 =1;
}
}
以上代码编译、下载运行后P1^0控制的LED会闪烁!
LED0=0;点亮P10管脚LED亮,LED0 =1;熄灭LED。
delay( )是我们编写的函数,其中
for(m=0;m<500;m++)
for(n=0;n<500;n++); 是一段延迟程序。如果没有该函数否则LED0是不会闪烁的。
如果对C语言不了解,可以关注我的博客C语言部分。以后我们还会介绍!
c语言单片机管脚定义,单片机-IO管脚相关推荐
- vivado根据语言模板定义一般IO的管脚约束文件xdc
右栏flow navigator点击language templates 在xdc下查找模板,管脚定义为IO Pin Assignment,把preview里的语句粘贴进xdc文件,修改<pin ...
- 请注意LR78M05和LR78L05管脚定义的区别
今天发现一个很奇怪也很简单的问题,但是也花费了不少时间. [现象] 板子上的一个电压转换芯片7805输出不对.输入12V时输出有9V.仔细查看原理图,没有发现任何问题.测量PCB,也和原理图一致. [ ...
- 51c语言延时作用,51单片机C语言延时函数怎么定义和使用
描述 51单片机C语言延时函数怎么定义 C语言定义延时函数主要通过无意义指令的执行来达到延时的目的.C程序中可使用不同类型的变量来进行延时设计.经实验测试,使用unsigned char类型具有比un ...
- 51单片机C语言code定义,51单片机数组的定义方法(code与data的作用)
数组前不加"code"或"data",则默认将数组存放在程序存储器中: code 指定数据是存储在代码区,数据是在编程的时候跟代码一起写入代码存储器,运行过程中 ...
- 单片机c语言字符,单片机C语言中变量的定义方法解析
描述 1.C语言中变量的定义方法 -C语言中变量定义语法为: #pragma rambank0 :即以关键词#pragma开始,rambank0指明资料区块为第0块. unsigned char m_ ...
- 单片机c语言怎么定义字符串,单片机C语言中变量的定义方法解析
1.C语言中变量的定义方法 -C语言中变量定义语法为: #pragma rambank0 :即以关键词#pragma开始,rambank0指明资料区块为第0块. unsigned char m_acc ...
- 51单片机C语言波特率十六进制,理解51单片机串口通信的波特率与USB转串口通信...
RS232 在我们电脑上,一般都会有一个9针的串行接口,这个串行接口叫做RS232接口,它和UART通信有关联,但是由于现在笔记本电脑不带9针串口,所以和单片机通信越来越趋于使用USB虚拟串口. 九针 ...
- c语言使单片机输出低电平,单片机开发中的一些实用技巧
很多朋友正在学习单片机开发技术,但开发中免不了要碰到这样.那样的问题,有些问题可能无碍大局,但有一些问题却直接影响到产品的成本.体积.性能.这里介绍笔者的几个技巧,希望对大家的工作有帮助. 一.C语言 ...
- 单片机学c语言还是python好_单片机开发用哪种语言最好?
在过去的几十年中,单片机的规格变化不大,但是语言和支持软件的扩展为应用程序开发开辟了许多途径.多年来,对单片机进行编程涉及到两种语言的选择:C语言和汇编语言.但是随着现在可用于微处理器的新语言,用户在 ...
- 两位动态数码管电子秒表c语言,清翔电子51单片机6课动态显示数码管作业秒表...
单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟 相关下载链接://download. ...
最新文章
- 固态硬盘与QLC闪存
- stonesoft 虚拟安全解决方案
- Moravec角点检测算子
- Linux——Linux下安装tree
- 苹果 SwiftUI 踢馆谷歌 Flutter!
- [资料]自动化e2e测试 -- WebDriverJS,Jasmine和Protractor
- 嵌入式操作系统和普通操作系统的区别_嵌入式ARM和单片机的区别何在
- 移动终端WAPI证书快速下载并自动连接解决方案
- SqlServer 备份数据库语句
- java文字垂直居中_记录水平居中垂直居中
- 轻量级cnn网络cv方向总结
- sql中简简单单明明白白得使用 with temp as (select x from table1)
- 完美删除Mac Os自带输入法
- 好文分享人的脆弱和坚强都超乎想象
- RS Meet DL(68)-建模多任务学习中任务相关性的模型MMoE
- Python3网络爬虫
- 6.2 阈值处理-- 自适应阈值处理和 阈值Otsu处理
- 腾讯云轻量应用服务器系统盘不够用怎么挂载云硬盘?
- 一直在构建工作空间_国土空间规划一周知识整理(2020.11.09-2020.11.15)
- 语言缩写c-a,常见的国家语言缩写以及语言的代码