对于51系列单片机,现有四种编程语言支持,即汇编、pl/m,c和basic通常附在pc机上,是初学单片机编程的第一种语言。一个新变量名定 义之后可在程序中作变量使用,非常易学,根据解释的行可以找到 错误而不是当程序执行完才能显现出来。basic由于逐行解释自然很 慢,每一行必须在执行时转换成机器代码,需要花费许多时间不能 做到实时性。basic为简化使用变量,所有变量都用浮点值。basic 是用于要求编程简单而对编程效率和运行速度要求不高的场合。
pl/m是intel从8080微处理器开始为其系列产品开发的编程语言。现在已经没有看到人在使用了, 它很像pascal,是一种结构化语言,但它使用关键字去定义结构。 pl/m编译器好像汇编器一样可产生紧凑代码。pl/m总的来说是“高 级汇编语言”,可详细控制着代码的生成。但对51系列,pl/m不支 持复杂的算术运算、浮点变量而无丰富的库函数支持。学习pl/m无 异于学习一种新语言。
c语言是一种源于编写unix操作系统的语言,它是一种结构化 语言,可产生压缩代码。c语言结构是以括号{}而不是子和特殊符 号的语言。c可以进行许多机器级函数控制而不用汇编语言。与汇编相比,有如下优点:
对单片机的指令系统不要求了解,仅要求对51的存储器结构有 初步了解寄存器分配、不同存储器的寻址及数据类型等细节可由 编译器管理程序有规范的结构,可分为不同的函数。这种方式可 使程序结构化将可变的选择与特殊操作组合在一起的能力,改善了程序的可读性 编程及程序调试时间显著缩短,从而提高效率 提供的库包含许多标准子程序,具有较强的数据处理能将已编好程序可容易的植入新程序,因为它具有方便的模块化编程技术c语言作为一种非常方便的语言而得到广泛的支持,c语言程序本身并不依赖于机器硬件系统,基本上不做修改就可根据单片机的 不同较快地移植过来。是现在最流行的单片机编程语言
51的汇编语言非常像其他汇编语言,有人说单片机编程高手一般都用汇编语言。51的指令系统比第一代微处理 器要强一些。51的不同存储区域使得其复杂一些。尽管懂得汇编 语言不是你的目的,看懂一些可帮助你了解影响任何语言效率的 51特殊规定。例如,懂得汇编语言指令就可以使用在片内ram作 变量的优势,因为片外变量需要几条指令才能设置累加器和数据指针进行存取。要求使用浮点和启用函数时只有具备汇编编程经 验才能避免生成庞大的、效率低的程序,这需要考虑简单的算术 运算或先算好的查表法。最好的软件编程者应是由汇编转用c而不是原来用过标准c语言的人。
3、电源VCC(PIN40)和地线、 高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位)
5、 内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍)
针对AT89C52单片机,头文件AT89x52.h给出了SFR特殊功能寄存器所有端口的定义。教科书的160页给出了针对MCS51系列单片机的C语言扩展变量类型。
6、 While( 1 ); 表示无限执行该语句,即死循环。语句后的分号表示空循环体,也就是{;}
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口
将某引脚的输入电平取反后,从另一个引脚输出:( 比如 P0.4 = NOT( P1.1) )
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口
将某端口8个引脚输入电平,低四位取反后,从另一个端口8个引脚输出:( 比如 P2 = NOT( P3 ) )
void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口
P3 = 0xff; //初始化。P3作为输入,必须输出高电平,同时给P3口的8个引脚输出高电平
P2 = P3^0x0f //读取P3,就是认为P3为输入,低四位异或者1,即取反,然后输出
注意:一个字节的8位D7、D6至D0,分别输出到P3.7、P3.6至P3.0,比如P3=0x0f,则P3.7、P3.6、P3.5、P3.4四个引脚都输出低电平,而P3.3、P3.2、P3.1、P3.0四个引脚都输出高电平。同样,输入一个端口P2,即是将P2.7、P2.6至P2.0,读入到一个字节的8位D7、D6至D0。
2、 接晶体:X1(PIN18)、X2(PIN19)。注意标出晶体频率(选用12MHz),还有辅助电容30pF
将一发光二极管LED的正极(阳极)接P1.1,LED的负极(阴极)接地GND。只要P1.1输出高电平VCC,LED就正向导通(导通时LED上的压降大于1V),有电流流过LED,至发LED发亮。实际上由于P1.1高电平输出电阻为10K,起到输出限流的作用,所以流过LED的电流小于(5V-1V)/10K = 0.4mA。只要P1.1输出低电平GND,实际小于0.3V,LED就不能导通,结果LED不亮。
void main( void ) //单片机复位后的执行入口,void表示空,无输入参数,无返回值
一支七段数码管实际由8个发光二极管构成,其中7个组形构成数字8的七段笔画,所以称为七段数码管,而余下的1个发光二极管作为小数点。作为习惯,分别给8个发光二极管标上记号:a,b,c,d,e,f,g,h。对应8的顶上一画,按顺时针方向排,中间一画为g,小数点为h。
我们通常又将各二极与一个字节的8位对应,a(D0),b(D1),c(D2),d(D3),e(D4),f(D5),g(D6),h(D7),相应8个发光二极管正好与单片机一个端口Pn的8个引脚连接,这样单片机就可以通过引脚输出高低电平控制8个发光二极的亮与灭,从而显示各种数字和符号;对应字节,引脚接法为:a(Pn.0),b(Pn.1),c(Pn.2),d(Pn.3),e(Pn.4),f(Pn.5),g(Pn.6),h(Pn.7)。
如果将8个发光二极管的负极(阴极)内接在一起,作为数码管的一个引脚,这种数码管则被称为共阴数码管,共同的引脚则称为共阴极,8个正极则为段极。否则,如果是将正极(阳极)内接在一起引出的,则称为共阳数码管,共同的引脚则称为共阳极,8个负极则为段极。
以单支共阴数码管为例,可将段极接到某端口Pn,共阴极接GND,则可编写出对应十六进制码的七段码表字节数据如右图:
我们在P1端口接一支共阴数码管SLED,在P2、P3端口接16个按键,分别编号为KEY_0、KEY_1到KEY_F,操作时只能按一个键,按键后SLED显示对应键编号。
个人觉得单片机编程入门并不难,但写一个好的程序出来非常的难,她和电脑不同,要考虑到执行效率以及抗干扰等问题。
Ambiq日前推出了Apollo510 Arm Cortex-M55 MCU,其效率是典型 Cortex-M4 设计的 30 倍,性能是 Apollo4 Cortex-M4 MCU的 10 倍 ...
瑞典乌普萨拉,2024年3月27日 – 全球领先的嵌入式系统开发软件解决方案供应商IAR自豪地宣布:公司备受全球数百万开发者青睐的开发环境再 ...
一、概述:SysTick是一个简单的递减24位计数器。如果你不需要再应用程序中嵌入操作系统,SysTick可以作为简单的延时和产生周期性的中断。状 ...
一、入门总结1 1为什么要把时间花在“犹豫”上?每当我们在入门之前(ARM是这样,DSP也一样),总会有很多疑问,会有很多顾虑。我们渴望知 ...
RS485通信想必大家都知道,在学习RS232时,都会拿485(RS485下文就用485代替)和其作对比。485优缺点不说,网上有。我用的是STM32库函数学的4 ...
综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程词云:
杏彩体育官方平台 上一篇:怎样设计一款基于51单片机红外遥控器设计系统呢? 下一篇:单片机上电后没有运转首先要检查什么?