正在加载...
       



正在加载...

单片机自学入门

试试看,不看书,您能得几分?总分是83分(还有两题主观题,谈学习、实验感..
相关内容: 感受 学习 主观 还有 总分 看书 试试看 实验
单片机期中测验一、填空(每格1分共15分) 单片机有各种型号,我们以INTEL公司的_______系列为例来学习单片机技术。  半导体存储器中有一类在掉电后不会丢失数据,称之为_________,有一类掉电后会丢失数据,称之为____________。  我们用的单片机一共有______个引脚。其中第9脚是______引脚。  单片机的存储器空间一共有四个,分别是_______________、_____________、_____________和_____________。  我们要让单片机工作,得要向单片机发布指令,单片机只能接受_______格式的指令,而我们人则不习惯于这种方式,因此我们通常用_______的格式写指令。   MOVA,#14H中,#14H的寻址方式称之为___________________。MOV类指令称之为___________________。  关于堆栈类操作的两条指令分别是______________、____________。 二、判断题(每题1分共10分)8031芯片内一共有4K的ROM,256字节的RAM。………………………………………() 8位构成一个字节,一个字节所能表达的数的范围是0-255。…………………………….() 8031中的工作寄存器就是内部RAM中的一部份。…………………………………………() 8031中特殊功能寄存器(SFR)就是内部RAM中的一部份。…………………………….() MOVA,@R0这条指令中@R0的寻址方式称之为寄存器间址寻址。…………………() P0口是真正的双向I/O口,而P1、P2、P3则是“准”双向I/O口。………………………() MOVA,30H这条指令执行后的结果是(A)=30H………………………………………() MOVA,@R7,将R7单元中的数据作为地..
I/O口输入、输出扩展
相关内容: 输出 输入 扩展
实验九I/O口输入、输出扩展 一、实验目的学习在单片机系统中扩展简单I/O口的基本方法。二、实验内容1、实验原理图:2、实验内容MCS—51外部扩展空间很大,但数据总线口和控制信号的负载能力是有限的,若需要扩展的芯片较多,则MCS—51总线口负载过重,74LS244是一个输入扩展口,同时也是一个单向驱动器,以减轻总线负担。74LS373做为同向输出口,控制8个发光二极管的亮灭。三、程序程序清单:ORG0600HHA3S:MOVDPTR,#0A000HMOVXA,@DPTRMOVDPTR,#0B000HMOVX@DPTR,AMOVR2,#20HACALLDELAYSJMPHA3SDELAY:PUSH02HDELAY1:PUSH02HDELAY2:PUSH02HDELAY3:DJNZR2,DELAY3POP02HDJNZR2,DELAY2POP02HDJNZR2,DELAY1POP02HDJNZR2,DELAYRETEND四、实验步骤①74LS244的输入端PI0—PI7接K1—K8,74LS373的输出端PO0—PO7接L1—L8。②在EXIC插座上插上一片74LS32、一片74LS04,然后按图连好有关线路。③K1—K7全拨在上面(高电平),L1—L8全亮。④按F2键进入仿真1态,即“P.....”态。⑤用连续方式从起始地址0600H开始运行程序。⑥拨动K1—K8,观察L1—L8点亮情况。
工业顺序控制
相关内容: 顺序 工业 控制
实验二工业顺序控制 掌握工业顺序控制程序的简单编程,中断的使用。实验内容1.实验原理图:2.实验内容8032的P1.0—P1.6控制注塑机的七道工序,现模拟控制七只发光二极管的点亮,高电平有效,设定每道工序时间转换为延时,P3.4为开工启动开关,低电平启动。P3.3为外故障输入模拟开关,P3.3为0时不断告警。P1.7为报警声音输出,设定6道工序只有一位输出,第七道工序三位有输出。3、实验说明实验中用外部中断0,编中断服务程序的关键是:(1)保护进入中断时的状态,并在退出中断之前恢复进入状态。(2)必须在中断程序中设定是否允许中断重入,即设置EX0位。一般中断程序进入时应保护PSW、ACC以及中断程序使用但非其专用的寄存器,本实验中未涉及。三、程序程序清单:ORG0013HLJMPHA2S3ORG0580HHA2S:MOVP1,#07FHORLP3,#00HHA2S1:JNBP3.4,HA2S1ORLIE,#84HORLIP,#04HMOVPSW,#00HMOVSP,#53HHA2S2:MOVP1,#07EHACALLHA2S7MOVP1,#07DHACALLHA2S7MOVP1,#07BHACALLHA2S7MOVP1,#077HACALLHA2S7MOVP1,#06FHACALLHA2S7MOVP1,#05FHACALLHA2S7MOVP1,#03FHACALLHA2S7SJMPHA2S2HA2S3:MOVB,R2HA2S4:MOVP1,#07FHMOV20H,#0A0HHA2S5:SETBP1.7ACALLHA2S6CLRP1.7ACALLHA2S6DJNZ20H,HA2S5CLRP1.7ACALLHA2S6JNBP3.2,HA2S4MOVR2,BRETIHA2S6:MOVR2,#06HACALLDELAYRETHA2S7:MOVR2,#30HACALLDELAYRETDELAY:PUSH02HDELAY1:PUSH02HDELAY2:PUSH02HDELAY3:DJNZR2,DELAY3POP02HDJNZR2,DELAY2POP02HDJNZR2,DELAY1POP02HDJNZR2,DELAYRETEND四、实验步骤①P3.4连K1,P3.2连K2,P1.0—P1.6分别连到L1—L7,P1.7连SIN(电子音..
波形信号发生器
相关内容: 信号发生器 波形
实验十波形信号发生器一、实验目的1、了解D/A转换与单片机的接口方法。2、了解D/A转换芯片0832的性能及编程方法。3、了解单片机系统中利用D/A转换芯片产生各种波形信号的基本方法。二、实验内容1.实验原理图:2、实验内容利用0832输出一个从-5V开始逐渐升到0V再逐渐升至5V,再从5V逐渐降至0V,再降至-5V的锯齿波电压。三、程序程序清单:ORG0740HHA6S:MOVSP,#53HHA6S1:MOVR6,#00HHA6S2:MOVDPTR,#8000HMOVA,R6MOVX@DPTR,AMOVR2,#0BHLCALLDELAYINCR6CJNER6,#0FFH,HA6S2HA6S3:MOVDPTR,#8000HDECR6MOVA,R6MOVX@DPTR,AMOVR2,#0BHLCALLDELAYCJNER6,#00H,HA6S3SJMPHA6S1DELAY:PUSH02HDELAY1:PUSH02HDELAY2:PUSH02HDELAY3:DJNZR2,DELAY3POP02HDJNZR2,DELAY2POP02HDJNZR2,DELAY1POP02HDJNZR2,DELAYRETEND四、实验步骤①把D/A区0832片选CS信号线接至译码输出插孔Y0。②将+12V插孔、—12V插孔通过导线连到外置电源上,如果电源内置时,则+12V\,-12V电源已连好。③将D/A区WR插孔连到BUS3区XWR插孔。④将电位器W2的输出VREF连到D/A区的VREF上,电位器W2的输VIN连到+12V插孔,调节W2使VREF为+5V。⑤用8芯排线将D/A区D0—D7与BUS2区XD0—XD7相连。⑥在“P.....”状态下,从起始地址0740H开始连续运行程序(输入0740后按EXEC键)。用万用表或示波器测D/A输出端AOUT,应能测出不断加大和减小的电压值。..
第七章 Keil C51的代码效率
相关内容: 效率 代码 Keil
第七章KeilC51的代码效率C51程序编译生成汇编代码的效率,是由许多因素共同决定的,对于KeilC51,主要受以下两种因素影响:存储模式的影响存储模式决定了缺省变量的存储空间,而访问各空间变量的汇编代码的繁简程度决定了代码率的高低。例如:一个整形变量i,如放于内存18H、19H空间,则++i的操作编译成四条语句:INC0x19MOVA,0x19JNZ0x272DINC0x180x272D:而如果放于外存空间0000H、0001H则++i的操作编译成九条语句:MOVDPTR,0001MOVXA,@DPTRINCAMOVX@DPTR,AJNz#5MOVOPTR,#0000MOVXA,@DPTRINCAMOVX@DPTR,A就汇编之后的语句而言,对外部存储器的操作较内部存储器操作代码率要低得多,生成的语句为内存的两倍以上,而程序中有大量的这种操作,可见存储模式对代码率的响了。因此程序设计的原则是1、存储模式从small-Compact-large依次选择,实在是变量太多,才选large模式。2、即使选择了large模式,对一些常用的局部的或者可放于内存中的变量,最好放于内存中,以尽量提高程序的代码率。程序结构的影响程序的结构单元包括模块、函数等等。同样的功能,如果结构越复杂,其所涉及的操作、变量、功能模块函数等就越多,较之结构性好,代码简单的程序其代码率自然就低得多。此外程序的运行控制语句,也是影响代码率的关键因素,例如:switch-case语句,许多编译器都把它们译得非常复杂,KeilC51也不例外,相对较为简易的Switch-case语句,编译成跳转指令形式,代码率较高,但对较为复杂的Switch-Case,则要调用一个系统库函数?C?ICASE进行处理,非常复杂。再如if(),while(),等语句也是代..
第五章 Keil C51库函数参考
相关内容: 参考 函数 Keil 第五
第五章KeilC51库函数参考C51强大功能及其高效率的重要体现之一在于其丰富的可直接调用的库函数,多使用库函数使程序代码简单,结构清晰,易于调试和维护,下面介绍C51的库函数系统。第一节本征库函数(intrinsicroutines)和非本征证库函数C51提供的本征函数是指编译时直接将固定的代码插入当前行,而不是用ACALL和LCALL语句来实现,这样就大大提供了函数访问的效率,而非本征函数则必须由ACALL及LCALL调用。C51的本征库函数只有9个,数目虽少,但都非常有用,列如下:_crol_,_cror_:将char型变量循环向左(右)移动指定位数后返回_iror_,_irol_:将int型变量循环向左(右)移动指定位数后返回_lrol_,_lror_:将long型变量循环向左(右)移动指定位数后返回_nop_:相当于插入NOP_testbit_:相当于JBCbitvar测试该位变量并跳转同时清除。_chkfloat_:测试并返回源点数状态。使用时,必须包含#inclucle<intrins.h>一行。如不说明,下面谈到的库函数均指非本征库函数。第二节几类重要库函数1.专用寄存器include文件例如8031、8051均为REG51.h其中包括了所有8051的SFR及其位定义,一般系统都必须包括本文件。2.绝对地址include文件absacc.h该文件中实际只定义了几个宏,以确定各存储空间的绝对地址。3.动态内存分配函数,位于stdlib.h中4.缓冲区处理函数位于“string.h”中其中包括拷贝比较移动等函数如:memccpymemchrmemcmpmemcpymemmovememset这样很方便地对缓冲区进行处理。5.输入输出流函数,位于“stdio.h”中流函数通8051的串口或用户定义的I/O口读写数据,缺省为8051串口,如要修改,比如..
第四章 Keil C51高级编程
相关内容: 高级 第四章 Keil 编程
第四章KeilC51高级编程本章讨论以下内容:绝对地址访问C与汇编的接口C51软件包中的通用文件段名转换与程序优化第一节绝对地址访问C51提供了三种访问绝对地址的方法:1.绝对宏:在程序中,用“#include<absacc.h>”即可使用其中定义的宏来访问绝对地址,包括:CBYTE、XBYTE、PWORD、DBYTE、CWORD、XWORD、PBYTE、DWORD具体使用可看一看absacc.h便知例如:rval=CBYTE[0x0002];指向程序存贮器的0002h地址rval=XWORD[0x0002];指向外RAM的0004h地址2._at_关键字直接在数据定义后加上_at_const即可,但是注意:(1)绝对变量不能被初使化;(2)bit型函数及变量不能用_at_指定。例如:idatastructlinklist_at_0x40;指定list结构从40h开始。xdatachartext[25b]_at_0xE000;指定text数组从0E000H开始提示:如果外部绝对变量是I/O端口等可自行变化数据,需要使用volatile关键字进行描述,请参考absacc.h。3.连接定位控制此法是利用连接控制指令codexdatapdata\databdata对“段”地址进行,如要指定某具体变量地址,则很有局限性,不作详细讨论。第二节KeilC51与汇编的接口1.模块内接口方法是用#pragma语句具体结构是:#pragmaasm汇编行#pragmaendasm这种方法实质是通过asm与ndasm告诉C51编译器中间行不用编译为汇编行,因而在编译控制指令中有SRC以控制将这些不用编译的行存入其中。2.模块间接口C模块与汇编模块的接口较简单,分别用C51与A51对源文件进行编译,然后用L51将obj文件连接即可,关键问题在于C函数与汇编函数之间的参数传递问题,C51中有两种参数传递方法。(1)通过寄存器传递函数参数最..
第三章 Keil C51 vs 标准C
相关内容: 标准 第三章 Keil
第三章KeilC51vs标准C 深入理解并应用C51对标准ANSIC的扩展是学习C51的关键之一。因为大多数扩展功能都是直接针对8051系列CPU硬件的。大致有以下8类:1、8051存储类型及存储区域2、存储模式3、存储器类型声明4、变量类型声明5、位变量与位寻址6、特殊功能寄存器(SFR)7、C51指针8、函数属性具体说明如下(8031为缺省CPU)。第一节KeilC51扩展关键字C51V4.0版本有以下扩展关键字(共19个):_at_idatasfr16alieninterruptsmallbdatalarge_task_Codebitpdatausingreentrantxdatacompactsbitdatasfr第二节内存区域(MemoryAreas)1.PragramArea:由Code说明可有多达64kBytes的程序存储器2.InternalDataMemory:内部数据存储器可用以下关键字说明:data:直接寻址区,为内部RAM的低128字节00H~7FHidata:间接寻址区,包括整个内部RAM区00H~FFHbdata:可位寻址区,20H~2FH3.ExternalDataMemory外部RAM视使用情况可由以下关键字标识:xdata:可指定多达64KB的外部直接寻址区,地址范围0000H~0FFFFHpdata:能访问1页(25bBytes)的外部RAM,主要用于紧凑模式(CompactModel)。4.SpeciacFunctionRegisterMemory8051提供128Bytes的SFR寻址区,这区域可位寻址、字节寻址或字寻址,用以控制定时器、计数器、串口、I/O及其它部件,可由以下几种关键字说明:sfr:字节寻址比如sfrP0=0x80;为PO口地址为80H,“=”后H~FFH之间的常数。sfr16:字寻址,如sfr16T2=0xcc;指定Timer2口地址T2L=0xccT2H=0xCDsbit:位寻址,如sbitEA=0xAF;指定第0xAF位为EA,即中断允许还可以有如下定义方法:sbit0V=PSW^2;(定义0..
第二章 Keil C51软件使用详解
相关内容: 详解 软件使用 Keil 第二章
KeilC51编译器的控制指令C51编译器的控制指令分为三类:源文件控制类,目标文件控制类及列表控制类。1.源文件控制类NOEXTEND:C51源文件不允许使用ANSIC扩展功能。DEFINE(DF):定义预处理(在C51命令行)。2.目标文件(Object)控制类:COMPACTLARGESMALL选编译模式DEBUG(DB)包含调试信息,以供仿真器或dSCope51使用。NOAMAKE(NOAM)禁止AutoMake信息记录NOREGPARMS禁止用寄存器传递参数OBJECTEXTEND(OE)Object文件包含附加变量类型信息OPTIMIZE(OT)指定优化级别REGFILE(RF)指定一个寄存器使用的文件以供整体优化用REGISTERBANK(RB)指定一个供绝对寄存器访问的寄存器区名SRC不生成目标文件只生成汇编源文件其它控件不常用。3.列表文件(listing)控制类:CODE(CD):向列表文件加入汇编列表LISTINCLUDE(LC):显示indude文件SYMBOLS(SB):列表文件包括模块内所有符号的列表WARNINGLEVEL(WL):选择“警告”级别第二节dScope51的使用1.dScope51forDos总的来说dScope51具有以下特性:高级语言显示模式集成硬件环境模拟单步或“GO”执行模式存储器、寄存器及变量访问Watch表达式之值函数与信号功能下面,具体说明在进入dScope51forDos之后,如何实现上述功能,dScope51采用下拉菜单格式和窗口显示控制,共有language、serial、exe、register四个窗口,其中exe为命令行窗口,language为程序窗口,serial为串口窗,register为寄存器窗。(1)高级语言显示模式单击主菜单中的“View”,第一栏中的三条命令“Highlevel”、“Mixed”、“Assembly”分别对所装入的程序按照“高级”、“混合级”及“汇编级”..
uVision2教程第二十课:编译器的调用
相关内容: 调用 编译器 uVision2 第二 教程
第一章KeilC51开发系统基本知识第一节系统概述KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍KeilC51开发系统各部分功能和使用。第二节KeilC51单片机软件开发系统的整体结构C51工具包的整体结构,如图(1)所示,其中uVision与Ishell分别是C51forWindows和forDos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。第三节KeilC51工具包的安装1.C51forDos在Windows下直接运行软件包中DOS\C51DOS.exe然后选择安装目录即可。完毕后欲使系统正常工作须进行以下操作(设C:\C51为安装目录):修改Autoexec.bat,加入path=C:\C51\BinSetC51LIB=C:\C51\LIBSetC51INC=..
单片机解密的几种方法和策略
相关内容: 解密 方法 策略 单片机
单片机(Microcontroller)都有内部ROM/EEPROM/FLASH供用户存放程序。为了防止未经授权访问或拷贝单片机的机内程序,大部分单片机都带有加密锁定位或者加密字节,以保护片内程序。如果在编程时加密锁定位被使能(锁定),就无法用普通编程器直接读取单片机内的程序,这就是所谓拷贝保护或者说锁定功能。事实上,这样的保护措施很脆弱,很容易被破解。单片机攻击者借助专用设备或者自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通过多种技术手段,就可以从芯片中提取关键信息,获取单片机内程序。因此,作为电子产品的设计工程师非常有必要了解单片机攻击的最新技术。单片机,解密,侵入,破解,一、单片机攻击技术目前,攻击单片机主要有四种技术,分别是:A、软件攻击使用处理器通信接口并利用协议、加密算法或这些算法中的安全漏洞来进行攻击。软件攻击取得成功的一个典型事例是对早期ATMELAT89C系列单片机的攻击。攻击者利用了该系列单片机擦除操作时序设计上的漏洞,使用自编程序在擦除加密锁定位后,停止下一步擦除片内程序存储器数据的操作,从而使加过密的单片机变成没加密的单片机,然后利用编程器读出片内程序。B、电子探测攻击通常以高时间分辨率来监控处理器在正常操作时所有电源和接口连接的模拟特性,并通过监控它的电磁辐射特性来实施攻击。因为单片机是一个活动的电子器件,当它执行不同的指令时,对应的电源功率消耗也相应变化。这样通过使用特殊的电子测量仪器和数学统计方法分析和检测这些变化,即可获取单片机中的特定关..
指令图示记忆法
相关内容: 记忆法 图示 指令
相似功能归类法在MCS-51指令中,我们发现部分指令其操作码不同,但功能相似,而操作数则完全一样。相似功能归类法就是把具有这样特点的指令放在一起记忆,只要记住其中的一条,其余的也就记住了。如加、减法的十二条指令,与、或、非的XXXXX条指令,现列举如下。  ADD/ADDC/SUBBA,#[email=data/direct/Rn/@Ri]data/direct/Rn/@Ri[/email]  ANL/ORL/XRLA,#[email=data/direct/Rn/@Ri]data/direct/Rn/@Ri[/email]  ANL/ORL/XRLdirect,#data/a  上述每一排指令,功能相似,其操作数都相同。其它的如加1(INC)、减1(DEC)指令也可照此办理。
指令记忆
相关内容: 记忆 指令
指令图示记忆法图示记忆法是把操作功能相同或相似、但其操作数不同的指令,用图形和箭头将目的、源操作数的关系表示出来的一种记忆方法。  由助记符CJNE形成的四条指令,也可以用图示法表示CJNEA,#data,rel  CJNEA,direct,relCJNE@Rn,#data,rel CJNE@Ri,#data,rel  另外,对于由(ANL、ORL、ARL)形成的18条逻辑操作指令,有关A的四条环移指令,也可以用图示法表示,请读者自行画出记忆。
单片机快速记忆令
相关内容: 记忆 快速 单片机
功能模块速记忆法单片机的44个指令助记符,按所属指令功能可分为五大类,每类又可以按功能相似原则为2~3组。这样,化整为零,各个击破,实现快速记忆。  1)数据传送组。      2)加减运算组   MOV内部数据传送   ADD加法   MOVC程序存储器传送  ADDC带进位加法   MOVX外部数据传送   SUBB带进位减法  3)逻辑运算组。     4)子程序调用组。   ANL逻辑与       LCALL长调用   ORL逻辑或      ALALL绝对调用   XRL逻辑异或      RET子程序返回 
数码管接口与编程
相关内容: 数码 接口 编程
数码管接口与编程二一.LED数码显示器的动态显示方法由于静态显示占用的I/O口线较多,CPU的开销很大,所以为了节省单片机的I/O口线,常采用动态扫描方式来作为LED数码管的接口电路。在实际的工程应用中,它是使用最为广泛的一种显示方式,其接口电路是把所有显示器的8个笔划段h-a同名端连在一起,而每一个显示器的公共极COM端与各自独立的I/O口连接。当CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟是那个显示器亮,则取决于COM端,而这一端是由I/O口控制的,所以我们就可以自行决定何时显示哪一位了。而所谓动态扫描就是指我们采用分时的方法,一位一位地轮流控制各个显示器的COM端,使各个显示器每隔一段时间点亮一次。在轮流点亮的扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms左右),由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。在我们实验板的电路图中,我们把89C51的P2口作为位选端(即同名端ABCDEFGH)并联起来,而把它们的片选端分别与P3.5和P3.6连接(图中为了增加P3.5和P3.6的驱动能力采用了一个三极管)这样由P3.5和P3.6控制对应数码管的亮或灭,只要给P2.0送入不同的字形码,就能显示不同的数了。下面的这个程序,就是用我们实验板上的两个数码管来显示“0”和“1”,电路的连接方法请看后面的实验板电路图。FIRSTEQUP3.6;第一位数码管的位控制SECONDEQUP3.5;第二位数码管的位控制DISPBUFFEQU5AH;显示缓冲区为5AHORG0000H;A..
单片机的键盘接口与编程
相关内容: 接口 键盘 编程 单片机
单片机的键盘接口与编程一 键盘接口和数码管接口是构成单片机人机界面的主要方法,对于一个初学者来说,这部分的内容也是较难的,我们将用四节课的时间来学习这方面的知识。这一课先来讨论键盘的接口原理与编程方法。键盘是单片机应用系统不可缺少的重要输入设备,主要负责向计算机传递信息,我们可以通过键盘向计算机输入各种指令、地址和数据。它一般由若干个按键组合成开关矩阵,按照其接线方式的不同可分为两种:一种是独立式接法,一种是矩阵式接法,这一课先来讲解独立式键盘的工作原理和编程方法。 一.独立式键盘的工作原理和编程方法独立式键盘具有结构简单,使用灵活等特点,因此被广泛应用于单片机系统中,那么它是如何来工作的呢?我们慢慢往下看:1.独立式键盘的接线原理独立式键盘是由若干个机械触点开关构成的,把它与单片机的I/O口线连起来,通过读I/O口的电平状态,即可识别出相应的按键是否被按下,如果按键不被按下,其端口就为高电平;如果相应的按键被按下,则端口就变为低电平。在这种键盘的连接方法中,我们通常采用上拉电阻接法,即各按键开关一端接低电平,另一端接单片机I/O口线并通过上拉电阻与VCC相连,如上图所示。这是为了保证在按键断开时,各I/O口线有确定的高电平,当然,如果端口内部已经有上拉电阻,则外电路的上拉电阻可以省去,想想看,哪几个并行口内部是有上拉电阻的?通常我们用来做键盘的按键有触点式和非触点式两种,单片机中应用的一般是由机械触点构成的触点式微动开关。这种开关具有结构简单,使用可靠的优点,但当我们按下按键或释放..
单片机的定时与中断
相关内容: 时与 中断 单片机
单片机的定时与中断实验前面的两节课程我们介绍了单片机定时/计数器和中断的原理及结构,这节课我们就来做几个实验验证一下前面所学的内容。实验一、利用定时器实现灯的闪烁在开始学单片机时我们所做的第一个实验就是LED灯的闪烁,不过那是用延时程序做的,现在回想起来,这样做不是很恰当,为什么呢?因为我们的主程序做了灯的闪烁,就不能再干其它的事情了,难道单片机只能这样工作吗?当然不是,我们可以用定时器来完成灯的闪烁功能。程序如下:ORG0000H;AJMPSTART;ORG30H;START:MOVP1,#0FFH;关所有的灯MOVTMOD,#00000001B;定时/计数器0工作于方式1MOVTH0,#15H;MOVTL0,#0A0H;立即数(15AH+0A0H=5536)SETBTR0;定时/计数器0开始运行LOOP:JBCTF0,NEXT;如果TF0等于1,则清TF0并转NEXT处此处可以加入其他的任何指令AJMPLOOP;否则跳转到LOOP处运行NEXT:CPLP1.0;MOVTH0,#15H;MOVTL0,#9FH;重置定时/计数器的初值AJMPLOOP;END。把程序下载到实验板,看到了什么?灯开始闪烁了,这可是用定时器做的,不再是主程序的循环了。简单分析一下程序,为什么用JBC呢?TF0是定时/计数器0的溢出标记位,当定时器产生溢出后,该位由“0”变“1”,所以查询该位就可知道定时时间是否已到,该位为“1”后,要用软件将标记位清“0”,以便下一次定时时间到了将该位由“0”变为“1”,所以用了JBC指令,该指令前面已经学过--判“1”转移的同时,将该位清“0”。以上程序可以实现灯的闪烁了,可是主程序除了让灯闪烁外,还是不能做其他的事啊!不对,我们可以在LOOP:JBCTF0,NEXT和AJMPLOOP指令之间插入一些..
单片机程序的设计
相关内容: 程序 设计 单片机
单片机程序的设计 程序设计是单片机开发最重要的工作,程序设计就是利用单片机的指令系统,根据应用系统(即目标产品)的要求编写单片机的应用程序,其实我们前面已经开始这样做过了,这一课我们不是讲如何来设计具体的程序,而是教您设计单片机程序的基本方法。不过在讲解之前还是有必要先了解一下单片机的程序设计语言。一.程序设计语言这里的语言与我们通常理解的语言是有区别的,它指的是为开发单片机而设计的程序语言,如果您没有学过程序设计可能不太明白,我给大家简单解释一下,您知道微软的VB,VC吗?VB,VC就是为某些工程应用而设计的计算机程序语言,通俗地讲,它是一种设计工具,只不过这种工具是用来设计计算机程序的。要想设计单片机的程序当然也要有这样一种工具(说设计语言更确切些) 单片机的设计语言基本上有三类:1.完全面向机器的机器语言机器语言就是能被单片机直接识别和执行的语言,计算机能识别什么?以前我们讲过--是数字“0”或“1”,所以机器语言就是用一连串的“0”或“1”来表示的数字。比如:MOVA,40H;用机器语言来表示就是111001010100000,很显然,用机器语言来编写单片机的程序不太方便,也不好记忆,我们必须想办法用更好的语言来编写单片机的程序,于是就有了专门为单片机开发而设计的语言: 2.汇编语言汇编语言也叫符号化语言,它使用助记符来代替二进制的“0”和“1”,比如:刚才的MOVA,40H就是汇编语言指令,显然用汇编语言写成的程序比机器语言好学也好记,所以单片机的指令普遍采用汇编指令来编写,用汇编语言写成的程序我们就叫..
单片机指令
相关内容: 指令 单片机
单片机指令(一) 指令就是编程者给单片机下的命令,也就是我们平常所说的单片机软件,前面我们已经陆续地讲到了一些指令,但还远远不够,从这一课开始就要全面的讲解指令了,希望大家多动手实验,巩固所学的知识,说实在的,其实单片机并不难学。为了让大家比较容易记忆,按照常规分类,我把单片机的111条指令分成了五类—即数据传递类指令、算术运算类指令、逻辑运算类指令、控制转移类指令和位操作指令。这一课先来看数据传递类指令:一.数据传递类指令数据传递类指令是单片机中用的最多的指令,在51系列单片机的111条指令中共有28条是数据传递类指令,前面我们已经学到了几条,比如MOVR1,#250;MOVA,R6等,那么它们是怎么分类的呢?请往下看: 1.以累加器为目的操作数的指令(1)MOVA,Rn(2)MOVRn,A(3)MOVA,direct(4)MOVA,@Ri(5)MOVA,#data指令(1)把Rn中的数送入累加器A,Rn代表工作寄存器R0-R7(以后我们只要写到Rn都代表R0-R7,这一点请大家记住了);指令(2)则相反,把工作寄存器中的数送入累加器A中;指令(3)是把直接地址中的数送入累加器A中,driect就代表直接地址(以后也相同);指令(4)就是上一课我们讲的寄存器间接寻址,什么意思?这里再重复一遍,就是看一下工作寄存器中是什么值,把这个值作为地址,把这个地址中的数送入累加器A中,Ri代表什么意思呢?就是工作寄存器R0或者R1(以后如果写Ri都代表R0或R1);指令(5)就是把立即数(也叫常数)直接送入累加器A中,很显然data就代表立即数(以后也相同),其实这个我们以前提到过,加#的数就..
单片机寻址
相关内容: 寻址 单片机
单片机寻址是如何实现的什么是单片机的寻址?单片机有几种寻址方式?我们已经知道,单片机的工作过程就是一条一条地从ROM存储器中取出指令然后执行相关的操作,那么一条指令究竟有哪几部分组成?它又包括哪些内容?一般来说一条指令总是有操作码字段和操作数字段两部分组成,看下面两条指令,MOVR7,#250;MOVP1,#0FFH,这是我们以前学过的指令,在这两条指令中MOV就是操作码字段,R7和P1就是操作数地址字段,而#0FFH我们称为常数(也就是立即数),单片机执行指令时就根据指令中给出的地址寻找实际的操作数,不能理解,没关系,继续往下看。一.单片机的寻址先来看下面的实验:程序一就是我们以前做过的LED灯闪烁的实验,我们已经知道每次调用延时程序的时间都是相同的(125mS),如果现在提出这样的要求:灯亮后延时时间为125mS灯灭,灯灭后又延时100mS秒灯亮,如此循环,这样的程序还能满足要求吗?显然不能,怎么办?我们可以把它改成程序二,也就是先把一个数送入30H,在子程序中R7中的值并不固定,而是根据30H单元中传过来的数来确定,这样就可以满足要求,大家自行分析一下这个程序。从这里我们可以得出结论,在数据传递中要找到被传递的数,很多时候,这个数并不能直接给出,而是需要变化,这就引出了一个概念:如何寻找操作数,我们把寻找操作数所在单元地址的过程称之为寻址。在实验一中,我们直接使用数所在单元的地址找到了操作数,所以称之为直接寻址。而在实验二中,我们是把数先放在工作寄存器中,从工作寄存器中寻找数据,这种方式则称之为寄存器寻址。例如:MOVR7,30H..
单片机世界
相关内容: 世界 单片机
 单片机的概述单片机,专业名称—MicroControllerUnit(微控制器件),它是由大名鼎鼎的INTEL公司发明的,最早的系列是MCS-48,后来有了MCS-51,现在还有MCS-96系列。我们经常说的51系列单片机就是MCS-51,它是一种8位的单片机,而MCS-96系列则是一种16位的单片机,至于它们之间有何区别,我们以后会讲到。后来INTEL公司把它的核心技术转让给了世界上很多的小公司(不过,再小也有几个亿的销售/年哦),所以世界上就有许多公司生产51系列兼容单片机,比如飞利浦的87LPC系列,华邦的W78L系列,达拉斯的DS87系列,现代GSM97系列等等。目前在我国比较流行的就是美国ATMEL公司的89C51它是一种带FlashROM的单片机(至于什么是FlashROM,我在这儿先不作介绍,等以后大家学到相关的知识时自然就会明白),我们的讲座就是以该型号的单片机来作实验的。讲到这里,也许有的人会问:我平时在各种书上看到全是讲解8031,8051等型号的单片机,它们又有什么不同呢?其实它们同属于一个系列,只是89C51的单片机更新型一点(事实上,89C51目前正在用89S51代替,我们的实验系统采用就是89S52的,兼容89C52)。这里随便说一下,目前国内的单片机教材都是以8051为蓝本的,尽管其内核也是51系列的,但毕竟8051的单片机已经属于淘汰产品,在市场上也很少见到了,所以由此感叹,国内的高等教育是如此的跟不上时代的发展需要!这话可能会引起很多人的不满,所以大家千万别传出去哦!二.主要单片机的分类再给大家介绍一下我们经常在各种刊物上看到的AVR系列和PIC系列单片机是怎么回事?以便让大家对单片机的发展有一..
8条以O字母开头的MCS-51系列单片机的指令解读
相关内容: 条以 解读 开头 字母 MCS-51 指令 系列 单片机
8条以O字母开头的MCS-51系列单片机的指令1、ORLA,Rn指令名称:逻辑或操作指令指令代码:48H~4FH指令功能:累加器内容与寄存器内容进行逻辑或操作操作内容:A1←(A)∨(Rn),n=0~7字节数:1机器周期:12、ORLA,direct指令名称:逻辑或操作指令指令代码:45H操作内容:A←(A)∨(direct)字节数:2机器周期:13、ORLA,@Ri指令名称:逻辑或操作指令指令代码:46H~47H指令功能:累加器内容与内部RAM低128单元内容进行逻辑或操作操作内容:A←(A)∨((Ri));i=0,1字节数:1机器周期:14、ORLA,#data指令名称:逻辑或操作指令指令代码:44H指令功能:累加器内容与立即数进行逻辑或操作操作内容:A←(A)∨data字节数:2机器周期:15、ORLdirect,A指令名称:逻辑或操作指令指令代码:42H指令功能:内部RAM低128单元或专用寄存器内容与累加器内容进行逻辑或操作操作内容:direct←(direct)∨(A)字节数:2机器周期:16、ORLdirect,#data指令名称:逻辑或操作指令指令代码:43H指令功能:内部RAM低128单元或专用寄存器内容与立即数进行逻辑或操作。操作内容:direct←(direct)∨data字节数:3机器周期:27、ORLC,bit指令名称:位逻辑或操作指令指令代码:72H指令功能:累加位C状态与内部RAM可寻址位或专用寄存器指定位进行逻辑或操作操作内容:C←(C)∨(bit)字节数:2机器周期:28、ORLC,/bit指令名称:位反逻辑或操作指令指令代码:A0H指令功能:累加位C状态与内部RAM可寻址位或专用寄存器指定位的反进行逻辑或操作操作内容:C←(C)∨(bit非)字节数:2机器周期:2使用说明:指定位的..
1条以N字母开头的MCS-51系列单片机的指令解读
相关内容: 条以 解读 开头 字母 MCS-51 指令 系列 单片机
1条以N字母开头的MCS-51系列单片机的指令 1、NOP指令名称:空操作指令指令代码;00H指令功能:不执行任何操作,常用于产生一个机器周期的时间延迟。操作内容:PC←(PC)+l字节数:1机器周期:1
24条以M字母开头的MCS-51系列单片机的指令解读
相关内容: 条以 解读 开头 字母 MCS-51 指令 系列 单片机
24条以M字母开头的MCS-51系列单片机的指令 1、MOVA,Rn指令名称:寄存器数据传送指令指令代码:E8H~EFH指令功能:寄存器内容送累加器操作内容:A←(Rn),n=0~7字节数:1机器周期:12、MOVA,direct指令名称:直接寻址数据传送指令指令代码:E5H指令功能:内部RAM低126单元或专用寄存器内容送累加器操作内容:A←(direct)字节数:2机器周期:13、MOVA,@Ri指令名称:间接寻址数据传送指令指令代码:E6H~E7H指令功能:内部RAM低128单元内容送累加器操作内容:A←((Ri)),i=0,1字节数:1机器周期:14、MOVA,#data指令名称:立即数据传送指令指令代码:74H指令功能:立即数送累加器操作内容:A←data字节数:2机器周期:15、MOVRn,A指令名称:累加器数据传送指令指令代码:F8H~FFH指令功能:累加器内容送寄存器操作内容:Rn←(A)字节数:1机器周期:16、MOVRn,direct指令名称:直接寻址数据传送指令指令代码:A8H~AFH指令功能:内部RAM低128单元或专用寄存器内容送累加器操作内容:Rn←(direct),n=0~7字节数:2机器周期:27、MOVRn,#data指令名称:立即数据传送指令指令代码:78H~7FH指令功能:立即数送寄存器操作内容:Rn←data,n=0~7字节数:2机器周期:18、MOVdirect,A指令名称:累加器数据传送指令指令代码:F5H指令功能:累加器内容送内部RAM低128单元或专用寄存器操作内容:direct←(A)字节数:2机器周期:19、MOVdirect,Rn指令名称:寄存器数据传送指令指令代码:88H~8FH指令功能:寄存器内容送内部RAM低128单元或专用寄存器操作内容:direct←(Rn),n=0~7..
2条以L字母开头的MCS-51系列单片机的指令解读
相关内容: 条以 解读 开头 字母 MCS-51 指令 系列 单片机
2条以L字母开头的MCS-51系列单片机的指令 1、LCALLaddr16指令名称:长调用指令指令代码:12H指令功能:按指令给定地址进行子程序调用操作内容:PC←(PC)+3SP←(SP)+1(SP)←(PC)7~0SP←(SP)+1(SP)←(PC)15~8PC←addrl6字节数:3机器周期:2使用说明:在64KB的范围内调用子程序2、LJMPaddrl6指令名称:长转移指令指令代码:02H指令功能:使程序按指定地址进行无条件转移操作内容:PC←addrl6字节数:3机器周期:2
8条以J字母开头的MCS-51系列单片机的指令解读
相关内容: 条以 解读 开头 字母 MCS-51 指令 系列 单片机
8条以J字母开头的MCS-51系列单片机的指令1、JBbit,rel指令名称:位条件转移指令。指令代码:20H指令功能:根据指定位的状态,决定程序是否转移。若为1则转移;否则顺序执行。操作内容:若(bit)=1,则PC←(PC)+3+rel若(bit)≠1,则PC←(PC)+3字节数:3机器周期:22、JBCbit,rel指令名称:位条件转移清0指令指令代码:10H指令功能:对指定位的状态进行测试。若为1,则把该位清0并进行转移;否则程序顺序执行。操作内容:若(bit)=1,则PC←(PC)+3+rel,bit←0若(bit)≠1,则PC←(PC)+3字节数:3机器周期:23、JCrel指令名称:累加位条件转移指令指令代码:40H指令功能:根据累加位(C)的状态决定程序是否转移,若为1则转移,否则顺序执行。操作内容:若(C)=1,则PC←(PC)+2+rel若(C)≠1,则PC←(PC)+2字节数:2机器周期:24、JMP@A+DPTR指令名称:无条件间接转移指令指令代码:72H指令功能:A内容与DPTR内容相加作为转移目的地址,进行程序转移。操作内容:PC←(A)+(DPTR)字节数:1机器周期;25、JNBbit,rel指令名称:位条件转移指令指令代码:30H指令功能:根据指定位的状态,决定程序是否转移。若为0则转移;否则顺序执行。操作内容:若(bit)=0,则PC←(PC)+3+rel若(bit)≠0,则PC←(PC)+3字节数:3机器周期:26、JNCrel指令名称:累加位条件转移指令指令代码:50H指令功能:根据累加位(C)的状态决定程序是否转移。若为o则转移;否则顺序执行。操作内容:若(C)=0,则PC←(PC)+2+rel若(C)≠0,则PC←(PC)+2字节数:2机器周期:27、JNZrel指令名称:判0转移指令指令代码:70H指令功..
5条以I字母开头的MCS-51系列单片机的指令解读
相关内容: 条以 解读 开头 字母 MCS-51 指令 系列 单片机
5条以I字母开头的MCS-51系列单片机的指令 1、INCA指令名称:累加器加1指令指令代码:04H指令功能:累加器内容加1操作内容:A←(A)+1字节数:1机器周期:12、INCRn指令名称:寄存器加1指令指令代码:08H~0FH指令功能:寄存器内容加1操作内容:Rn←(Rn)+1,n=0~7字节数:1机器周期:13、INCdirect指令名称:直接寻址单元加1指令指令代码:05H指令功能:内部BAM低128单元或专用寄存器内容加1操作内容:direct←(direct)+1字节数:2机器周期:14、INC@Ri指令名称:间接寻址单元加1指令指令代码:06H~07H指令功能:内部RAM低128单元内容加1操作内容:(Ri)←((Ri))+1;i=0,l字节数:1机器周期:15、INCDPTR指令名称:16位数据指针加1指令指令代码:A3H指令功能:数据指针寄存器DPTR内容加1操作内容:DPTR←(DPTR)+1字节数:1机器周期:2
10个以C字母开头的MCS-51系列单片机的指令解读
相关内容: 个以 解读 开头 字母 MCS-51 指令 系列 单片机
10个以C字母开头的MCS-51系列单片机的指令 1、CJNEA,dircet,rel指令名称:数值比较转移指令指令代码:B5H指令功能:累加器内容与内部RAM低128字节或专用寄存器内容比较,不等则转移。操作内容:若(A)=(direct),则PC←(PC)+3,C←0若(A)>(direct),则PC←(PC)+3+rel,C←0若(A)<(direct),则PC←(PC)+3+rel,C←1字节数:3机器周期:22、CJNEA,#data,rel指令名称:数值比较转移指令指令代码:B4H指令功能:累加器内容与立即数比较,不等则转移。操作内容:若(A)=data,则PC←(PC)+3,C←0若(A)>data,则PC←(PC)+3+rel,C←0若(A)<data,则PC←(PC)+3+rel,C←1字节数:3机器周期:23、CJNERn,#data,rel指令名称:数值比较转移指令指令代码:B8H~BFH指令功能:寄存器内容与立即数比较,不等则转移。操作内容:若(Rn)=data,则PC←(PC)+3,C←0若(Rn)>data,则PC←(PC)+3+rel,C←0若(Rn)<data,则PC←(PC)+3+rel,C←1字节数:3机器周期:24、CJNE@Ri,#data,rel指令名称:数值比较转移指令指令代码:B6H~B7H指令功能:内部RAM低128单元内容与立即数比较,不等则转移。操作内容:若((Ri))=data,则PC←(PC)+3,C←0若((Ri))>data,则PC←(PC)+3+rel,C←0若((Ri))<data,则PC←(PC)+3+rel,C←1字节数:3机器周期:25、CLRA指令名称:累加器清0指令指令代码:E4H指令功能:累加器清0操作内容:A←0字节数:1机器周期:16、CLRC指令名称:进位标志清0指令指令代码:C3H指令功能:进位位清0操作内容:C←0字节数:1机器周期:17、CLRbit指令名称:直接寻址位清0指..



正在加载... 正在加载...


相关栏目


芯源单片机教程5:MCS-51定时/计数器..
MCS-51的单片机内有两个16位可编程的定时/计数器,它们具有四种工作方式,其控制字..

单片机的内外部结构分析(三)..


热门

应用 变频器 系统 西门子 控制 三菱 系列 基于 技术 电机 编程 设计 控制器 控制系统 伺服 方案 程序 如何 单片机 方法 电梯 什么 故障 使用 指令 通讯 功能 FX2N 总线 解决方案 触摸屏 问题 教程 连接 分析 模块 高压 实现 传感器 软件 s7-200 数据 详细 原理 S7-200plc 网络 输出 通信 可编程 输入 WeinView 步进 采用 设定 实例 监控系统 无线 智能 机上 解决 维修 ModBus 运行 行业 现场 工业 交流 安全 发展 LINUX 设备 设置 操作 Profibus DEVELOPER 检测 监控 显示 自动 PROFIBUS-DP 台达 参数 电路 可以 远程 S7-300PLC Omron zigbee 进行 改造 接口 安装 WinCC 特点 自动化 信号 方式 处理 及其 CC-link 基本 装置 siemens 电气 定位 一个 节能 原因 选择 VxWorks 嵌入式 视觉 以太网 施耐德 uCos 自动扶梯 放大器 ucLinux 监测 机器 中断 松下 mm440 串口 丹佛斯 案例 工具 变频

热门文章


励志创业 | 精彩瞬间 | FLASH | 2009年4月4日龙城广场 | 2009坪山协力元旦文艺专题 | 2010坪山协力元旦文艺专题

常用资料| 印刷| 电工| 电子| 工控| 论文| 制冷| 包装| 数控| 菜谱| 短信| 范文| 驾车| 安全| 创业| 笑话| 人生| 故事| 宝宝| 幼儿| 小学| 初中| 高中| 古典文学