搜档网
当前位置:搜档网 › 单片机汇编语言实现看门狗

单片机汇编语言实现看门狗

单片机汇编语言实现看门狗
单片机汇编语言实现看门狗

C51单片机和电脑串口通信电路图

C51单片机和电脑串口通信电路图与源码 51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。 串口通讯的硬件电路如上图所示 在制作电路前我们先来看看要用的MAX232,这里我们不去具体讨论它,只要知道它是TTL和RS232电平相互转换的芯片和基本的引脚接线功能就行了。通常我会用两个小功率晶体管加少量的电路去替换MAX232,可以省一点,效果也不错,下图就是MAX232的基本接线图。

按图7-3加上MAX232就可以了。这大热天的拿烙铁焊焊,还真的是热气迫人来呀:P串口座用DB9的母头,这样就可以用买来的PC串口延长线进行和电脑相连接,也可以直接接到电脑com口上。

为了能够在电脑端看到单片机发出的数据,我们必须借助一个WINDOWS软件进行观察,这里我们利用一个免费的电脑串口调试软件。本串口软件在本网站https://www.sodocs.net/doc/8910340166.html,可以找到 软件界面如上图,我们先要设置一下串口通讯的参数,将波特率调整为4800,勾选十六进制显示。串口选择为COM1,当然将网站提供的51单片机实验板的串口也要和电脑的COM1连接,将烧写有以下程序的单片机插入单片机实验板的万能插座中,并接通51单片机实验板的电源。

单片机电路图详解

单片机:交通灯课程设计(一) 目录 摘要--------------------------------------------------------- 1 1.概述 -------------------------------------------------------- 2 2.硬件设计----------------------------------------------------- 3 2.1单片机及其外围--------------------------------------------3 2.1.1单片机的选择-----------------------------------------3 2.1.2单片机的特点及其应用范围----------------------------- 3 2.1.3存储器的扩展----------------------------------------- 4 2.1.4内存的扩展------------------------------------------- 6 2.1.5MCS-52的I/O接口扩展--------------------------------- 8 2.2电路部分--------------------------------------------------11 2.2.1元器件选用-------------------------------------------11 2.2.2电路完成功能-----------------------------------------13 3.软件设计------------------------------------------------------15 3.1软件概述-------------------------------------------------15 3.2汇编语言指令说明-----------------------------------------16 3.3定时/计数器的原理----------------------------------------16 3.3.1定时/计数器的概述-----------------------------------16 3.3.2 8255A片选及各端口地址-------------------------------18 3.3.3信号控制码------------------------------------------18 3.3.4工作方式寄存器--------------------------------------19 3.3.5定时/计数器初值及定时器T0的工作方式----------------20

51单片机汇编程序范例

16位二进制数转换成BCD码的的快速算法-51单片机2010-02-18 00:43在做而论道上篇博文中,回答了一个16位二进制数转换成BCD码的问题,给出了一个网上广泛流传的经典转换程序。 程序可见: http: 32.html中的HEX2BCD子程序。 .说它经典,不仅是因为它已经流传已久,重要的是它的编程思路十分清晰,十分易于延伸推广。做而论道曾经利用它的思路,很容易的编写出了48位二进制数变换成16位BCD码的程序。 但是这个程序有个明显的缺点,就是执行时间太长,转换16位二进制数,就必须循环16遍,转换48位二进制数,就必须循环48遍。 上述的HEX2BCD子程序,虽然长度仅仅为26字节,执行时间却要用331个机器周期。.单片机系统多半是用于各种类型的控制场合,很多时候都是需要“争分夺秒”的,在低功耗系统设计中,也必须考虑因为运算时间长而增加系统耗电量的问题。 为了提高整机运行的速度,在多年前,做而论道就另外编写了一个转换程序,程序的长度为81字节,执行时间是81个机器周期,(这两个数字怎么这么巧!)执行时间仅仅是经典程序的!.近来,在网上发现了一个链接: ,也对这个经典转换程序进行了改进,话是说了不少,只是没有实质性的东西。这篇文章提到的程序,一直也没有找到,也难辩真假。 这篇文章好像是选自某个著名杂志,但是在术语的使用上,有着明显的漏洞,不像是专业人员的手笔。比如说文中提到的:

“使用51条指令代码,但执行这段程序却要耗费312个指令周期”,就是败笔。51条指令代码,真不知道说的是什么,指令周期是因各种机型和指令而异的,也不能表示确切的时间。 .下面说说做而论道的编程思路。;----------------------------------------------------------------------- ;已知16位二进制整数n以b15~b0表示,取值范围为0~65535。 ;那么可以写成: ; n = [b15 ~ b0] ;把16位数分解成高8位、低8位来写,也是常见的形式: ; n = [b15~b8] * 256 + [b7~b0] ;那么,写成下列形式,也就可以理解了: ; n = [b15~b12] * 4096 + [b11~b0] ;式中高4位[b15~b12]取值范围为0~15,代表了4096的个数; ;上式可以变形为: ; n = [b15~b12] * 4000 + {[b15~b12] * (100 - 4) + [b11~b0]} ;用x代表[b15~b12],有: ; n =x * 4000 + {x * (100 - 4) + [b11~b0]} ;即: ; n =4*x (千位) + x (百位) + [b11~b0] - 4*x ;写到这里,就可以看出一点BCD码变换的意思来了。 ;;上式中后面的位:

51单片机实用汇编程序库(word)

51 单片机实用程序库 4.1 流水灯 程序介绍:利用P1 口通过一定延时轮流产生低电平 输出,以达到发光二极管轮流亮的效果。实际应用中例如:广告灯箱彩灯、霓虹灯闪烁。 程序实例(LAMP.ASM) ORG 0000H AJMP MAIN ORG 0030H MAIN: 9 MOV A,#00H MOV P1,A ;灭所有的灯 MOV A,#11111110B MAIN1: MOV P1,A ;开最左边的灯 ACALL DELAY ;延时 RL A ;将开的灯向右边移 AJMP MAIN ;循环 DELAY: MOV 30H,#0FFH D1: MOV 31H,#0FFH D2: DJNZ 31H,D2 DJNZ 30H,D1 RET END 4.2 方波输出 程序介绍:P1.0 口输出高电平,延时后再输出低电 平,循环输出产生方波。实际应用中例如:波形发生器。 程序实例(FAN.ASM): ORG 0000H MAIN: ;直接利用P1.0 口产生高低电平地形成方波////////////// ACALL DELAY SETB P1.0 ACALL DELAY 10 CLR P1.0 AJMP MAIN ;////////////////////////////////////////////////// DELAY: MOV R1,#0FFH DJNZ R1,$ RET

五、定时器功能实例 5.1 定时1 秒报警 程序介绍:定时器1 每隔1 秒钟将p1.o 的输出状态改变1 次,以达到定时报警的目的。实际应用例如:定时报警器。程序实例(DIN1.ASM): ORG 0000H AJMP MAIN ORG 000BH AJMP DIN0 ;定时器0 入口 MAIN: TFLA G EQU 34H ;时间秒标志,判是否到50 个 0.2 秒,即50*0.2=1 秒 MOV TMOD,#00000001B;定时器0 工作于方式 1 MOV TL0,#0AFH MOV TH0,#3CH ;设定时时间为0.05 秒,定时 20 次则一秒 11 SETB EA ;开总中断 SETB ET0 ;开定时器0 中断允许 SETB TR0 ;开定时0 运行 SETB P1.0 LOOP: AJMP LOOP DIN0: ;是否到一秒//////////////////////////////////////// INCC: INC TFLAG MOV A,TFLAG CJNE A,#20,RE MOV TFLAG,#00H CPL P1.0 ;////////////////////////////////////////////////// RE: MOV TL0,#0AFH MOV TH0,#3CH ;设定时时间为0.05 秒,定时 20 次则一秒 RETI END 5.2 频率输出公式 介绍:f=1/t s51 使用12M 晶振,一个周期是1 微秒使用定时器1 工作于方式0,最大值为65535,以产生200HZ 的频率为例: 200=1/t:推出t=0.005 秒,即5000 微秒,即一个高电

MAX813看门狗电路

看门狗电路设计 在工业现场运行的单片机应用系统,由于坏境恶劣,常有强磁场、电源尖峰、电火花等外界干扰,这些干扰可能造成仪表中单片机的程序运行出现“跑飞”现象,引起程序混乱,输出或显示不正确,甚至“死机”。系统无法继续正常的运行,处在一种瘫痪状态,它的硬件电路并没有损坏,只是内部程序运行出现了错误,这时,即使干扰消失,系统也不会恢复正常,这就需要采取一些措施来保障系统失控后能自动恢复正常,“程序运行几天来视系统”(Watchdog看门狗)就是常用的一种抗干扰措施,用以保证系统因干扰失控后能自动复位。为了提高仪表可靠性及抗干扰能力,通常在智能仪表中采用“看门狗”技术。 看门狗电路它实质上是一个可由CPU复位的定时器,它的定时时间是固定不变的,一旦定时时间到,电路就产生复位信号或中断信号。当程序正常运行时,在小于定时时间隔内,单片机输出一信号刷新定时器,定时器处于不断的重新定时过程,因此看门狗电路就不会产生复位信号或中断信号,反之,当程序因出现干扰而“跑飞”时,单片机不能刷新定时器,产生复位信号或产生中断信号使单片机复位或中断,在中断程序中使其返回到起始程序,恢复正常。 它的工作原理如同图3-4所示的两个计时周期不同的定时器T1和T2是两个时钟源相同的定时器,设T1=1.0s,T2=1.1s,而用T1定时器的溢出脉冲P1同时对T1和T2定时器清零,只要T1定时器工作正常,则定时器T2永远不可能计时溢出。当T1定时器不在计时,定时器T2则会计时溢出,并产生溢出脉冲P2。一旦产生溢出脉冲P2,则表明T1出了故障。这里的T2即是看门狗。利用溢出脉冲P2并进行巧妙的程序设计,可以检测系统的出错,而后使“飞掉”的程序重新恢复运行。 图3-4 看门狗工作原理示意图 看门狗电路的应用,使单片机可以在无人关态下实现连续工作。看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这

51单片机AD89电路设计程序+原理图

AD0809在51单片机中的应用 我们在做一个单片机系统时,常常会遇到这样那样的数据采集,在这些被采集的数据中,大部分可以通过我们的I/O口扩展接口电路直接得到,由于51单片机大部分不带AD转换器,所以模拟量的采集就必须靠A/D或V/F实现。下现我们就来了解一下AD0809与51单片机的接口及其程序设计。 1、AD0809的逻辑结构 ADC0809是8位逐次逼近型A/D转换器。它由一个8路模拟开关、一个地址锁存译码器、一个A/D转换器和一个三态输出锁存器组成(见图1)。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。

2、AD0809的工作原理 IN0-IN7:8条模拟量输入通道 ADC0809对输入模拟量要求:信号单极性,电压围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。 地址输入和控制线:4条 ALE为地址锁存允许输入线,高电平有效。当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道

的模拟量进转换器进行转换。A,B和C为地址输入线,用于选通IN0-IN7上的一路模拟量输入。通道选择表如下表所示。 C B A 选择的通道 0 0 0 IN0 0 0 1 IN1 0 1 0 IN2 0 1 1 IN3 1 0 0 IN4 1 0 1 IN5 1 1 0 IN6 1 1 1 IN7 数字量输出及控制线:11条 ST为转换启动信号。当ST上跳沿时,所有部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。 CLK为时钟输入信号线。因ADC0809的部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ, VREF(+),VREF(-)为参考电压输入。

用CD4060制作看门狗报警电路

用CD4060制作看门狗报警电路 看门狗定时器(WDT,Watch Dog Timer)是单片机的一个组成部分,它实际上是一个计数器,一般给看门狗一个大数,程序开始运行后看门狗开始倒计数。如果程序运行正常,过一段时间CPU应发出指令让看门狗,重新开始倒计数。如果看门狗减到0就认为程序没有正常工作,强制整个系统复位。 原理图: CD4060芯片特性 1) 电压范围宽,应该可以工作在3V~15V,输入阻抗高,驱动能力差外,跟74系列的功能基本没有区别; 2) 输入时,1/2工作电压以下为0,1/2工作电压以上为1; 3) 输出时,1=工作电压;0=0V; 4) 驱动能力奇差,在设计时最多只能带1个TTL负载; 5) 如果加上拉电阻的话,至少要100K电阻; 6) 唯一现在使用的可能就是计数器,CD4060的计数器可以到14级二进制串行计数。 以AT89C51为例: 看门狗电路由14位二进制计数器CD4060和三极管VT1、VT2等组成。

Vout接单片机AT89C51的引脚输出口P1.7,由单片机的CPU向看门狗电路发送喂狗信号——正脉冲,在两个正脉冲间隔内,P1.7保持为低电平(此功能要结合软件才能实现,相应的软件设计在下面介绍)。我们知道,单片机AT89C51的I/O口带灌电流负载的能力比较大,每个引脚低电平时的吸入电流为20 mA,带拉电流负载的能力却很小,实测情况是,每个引脚高电平时的输出电流仅25μA,现在P1.7口被设计成带拉电流负载的方式,为了提高P1.7口带拉电流负载的能力,所以,电路中设置了上拉电阻R3。 14位二进制计数器CD4060的计数脉冲由其内部振荡器和外接阻容元件R1、R2、C1组成的电路产生,振荡周期为 T0SC=2.2×R1×C1=0.22 ms 振荡器产生的计数脉冲(矩形波)可以直接引出,同时还可以从CD4060的10个输出端Q4~Q10和Q12~Q14得到不同分频系数的方波输出,各方波输出信号的周期如表1所示。这样,如果CD4060得不到CPU通过P1.7口发送来的喂狗信号——正脉冲,则CD4060的输出端Q14在1.8S内将产生一个完整周期的方波信号,而且低电平在前,高电平在后,其高电平经三极管VT1、VT2处理后形成单片机AT89C51的复位信号,使单片机AT89C51复位。由此可见,单片机AT89C51正常工作时,只要在0.9S内从P1.7口送出一个正脉冲,便可及时清零看门狗,输出端Q14就不会产生定时溢出信号,从而使看门狗电路对单片机系统不起作用。并且,从CD4060的10个输出端Q4~Q10和Q12~Q14可以得到不同周期的方波信号,经三极管VT1、VT2处理后形成单片机系统的复位信号,可以适应不同用户应用程序,从而该硬件看门狗电路可以适应不同的单片机应用系统。 对MCS-51系列的单片机而言,它所需要的复位信号是高电平宽度大于2个机器周期的正脉冲,例如,单片机的时钟脉冲频率为12 MHz时,则所需要的复位信号高电平宽度为2μs以上就可以了,而由上面的分析可知,CD4060的Q14输出的是高电平宽度为0.9 s的方波,如果让它直接作为单片机的复位信号,则单片机的复位时间势必在0.9 s以上,这样尽管可以使程序跑飞的单片机复位,但是显然没有做到尽快地引导跑飞的程序到正确的轨道来,如果这样做的话,对于某些单片机应用系统而言可能带来非常严重的后果。图1中的三极管VT1、VT2及其周围阻容元件构成波形转换电路,把较宽的正脉冲变换为较窄的正脉冲,从而较好地解决了上述的问题。三极管VT1、VT2构成的2级直接耦合放大器作为缓冲器使用,它是CD4060的输出端Q14的灌电流负载,C2、R8是微分电路。 经分析后不难看出,电路中的R7、R8、C2还具有单片机上电复位的功能。 2 上电复位与看门狗信号复位的不同处理过程 由于程序跑飞很可能会造成一些随机破坏事件,对某些系统而言,希望尽可能从断点处恢复运行,因此,有必要妥善解决跑飞的程序回复后的处理。 单片机应用系统上电时,上电复位电路会使得单片机处于复位状态,这一般称为冷启动,这种情况下,单片机处于复位状态表现为: (1) 程序计数器PC的值为0000H。 (2) I/O口(P0、P1、P2、P3(1))为FFH状态,即准双向I/O口的输入状态。 (3) 堆栈指示器SP=07H,即堆栈底为片内RAM的07H单元。 (4) 除上述状态外,所有特殊功能寄存器SFR的有效位均为0。 (5) 上电复位时,由于是重新供电,RAM在断电时数据丢失,上电复位后为随机数。

C51单片机看门狗电路及程序设计方案

C51单片机看门狗电路及 程序设计案 院系:信息工程学院 年级:2010级 电子一班禹豪 电子一班训虎 电子二班邓启新 一、引言 在由单片机构成的微型计算机系统中,程序的正常运行常常会因为来自外界的电磁场干扰等原因而被打断,从而造成程序的跑飞,而陷入死循环。由此导致单片机控制的系统无法继续工作,造成整个系统的陷入停滞状态,发生不可预料的后果,所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片或程序,俗称"看门狗"(watchdog) (1)看门狗电路基本原理 看门狗电路的应用,使单片机可以在无人状态下实现连续工作,其工作原理是:看门狗芯片和单片机的一个I/O引脚相连**,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或低电平),这一程序语句是分散地放在单片机其他控制语句中间的,一旦单片机由于干扰造成程序跑飞后而陷入某一程序段进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个复位信号,使单片机发生复位,即程序从程序存储器的起始位置开始执行,这样便实现了单片机的自动复位。 *此处设计原理实际上为下文中硬件看门狗设计思路。

(2)看门狗电路一般设计式 “看门狗”电路一般分为硬件看门狗与软件看门狗两种设计式。 硬件看门狗是利用了一个定时器,来监控主程序的运行,也就是说在主程序的运行过程中,我们要在定时时间到之前对定时器进行复位。如果出现死循环,或者说PC指针不能回来,那么定时时间到后就会使单片机复位。常用的WDT芯片如MAX813,5045,IMP 813等,价格4~10元不等. 软件看门狗技术的原理和硬件看门狗类似,只不过是用软件的法实现(即利用单片机部定时器资源,通过编程模拟硬件看门狗工作式),以51系列为例:因在51单片机中有两个定时器,在利用部定时器资源来对主程序的运行进行监控时。可以对T1(或T0)设定一定的定时时间(设定的定时值要小于主程序的运行时间),当产生定时中断的时候对一个变量进行赋值(此变量在主程序运行的开始已有一个初值)。当主程序运行至最后时对此变量的值进行判断,如果值发生了预期的变化,就说明T0中断正常,如果没有发生变化则使程序复位。 考虑到设计要求,本设计采用软件看门狗设计思路。 二、看门狗电路整体设计思路 根据设计要求,本设计利用C51单片机部自带的定时器1进行编程,并配合少量电路实现“看门狗“电路功能。整个设计分为软件部分与硬件部分,如下: (1)软件部分设计原理: 软件设计分为三部分:“看门狗“定时器设置程序、溢出中断服务程序和喂狗代码。 1.1设计思路: 1)在主程序开头,“看门狗“定时器设置程序设置定时器1计时50ms。 2)当定时达50ms时,定时器1产生溢出中断,溢出中断服务程序开始工作,将看门狗标志num加1。当num的值等于100时,说明看门狗定时器已经计时5s,此时,单片机I/O端口P1.0输出高电平,对程序进行复位。 3)在此过程中,喂狗代码将被穿插于程序中循环体末尾。当循环体结束时,喂狗代码执行,关闭定时器1、清空num并重新初始化定时器设置。若循环体进入死循环,喂狗代码无法执行,num将一直累加至100,此时程序复位。 注:喂狗代码放置位置可根据num预计数值进行调整:当num门限值较小,即看门狗计数时间较短时,喂狗代码可放于程序中各循环体之后或均匀分布于整个主程序中。当num门限值较大,即看门狗计数时间较长时,喂狗代码可放于程序主循环体末尾。但是需注意看门狗计数时间必须长于正常工作时间,以免非正常复位。 1.2软件设计流程图:

51单片机的若干电路原理图

51单片机的若干电路原理图 单片机 2007-10-23 20:36:31 阅读198 评论0 字号:大中小订阅 利用下面这些原理图,就可以自己动手做个简单的实验板啦~~~~ 1 外接电源供电电路及电源指示灯 在单片机实训板上为系统设计了一个外接电源供电电路,这个电源电路具备两种电源供电方式:一种是直接采用PC的USB接口5V直流电源给实训板供电,然后在电源电路中加入一个500mA电流限制的自恢复保险丝给PC的USB电源提供了保护的作用;另一种是采用小型直流稳压电源供电,输出的9V直流电源加入到电源电路中,通过LM7805稳压芯片的降压作用,给实训板提供工作所需的5V电源。 如图2.4所示为采用LM7805稳压芯片进行降压供电的电源电路。 图2.4 外接电源供电电路 同时,为了显示外接电源给实训板提供了电源,在系统中增加了电源指示灯电路,如图2.5。 发光二极管工作在正常工作状态时,流过LED的电流只需要5~10mA左右就行,在电路中采用白发红高亮LED,所以可以取5mA左右

的电流值,通过计算,可知:连接LED的限流电阻的阻值可以采用680Ω。 图2.5 电源指示灯电路 2 系统复位电路 复位是单片机的初始化操作,只要给RESET引脚加上2个机器周期以上的高电平信号,即可使单片机复位。除了进入系统的正常初始化之外,当程序运行出错或是操作错误使系统处于死锁状态时,为了摆脱死锁状态,也需要按复位键重新复位。 在系统中,为了实现上述的两项功能,采用常用的按键电平复位电路,如图2.6所示。 2.6 按键电平复位电路 从途中可以看出,当系统得到工作电压的时候,复位电路工作在上电自动复位状态,通过外部复位电路的电容充电来实现,只要Vcc

单片机汇编语言指令集

汇编语言的所有指令数据传送指令集 MOV 功能: 把源操作数送给目的操作数 语法: MOV 目的操作数,源操作数 格式: MOV r1,r2 MOV r,m MOV m,r MOV r,data XCHG 功能: 交换两个操作数的数据 语法: XCHG 格式: XCHG r1,r2 XCHG m,r XCHG r,m PUSH,POP 功能: 把操作数压入或取出堆栈 语法: PUSH 操作数POP 操作数 格式: PUSH r PUSH M PUSH data POP r POP m PUSHF,POPF,PUSHA,POPA 功能: 堆栈指令群 格式: PUSHF POPF PUSHA POPA LEA,LDS,LES 功能: 取地址至寄存器 语法: LEA r,m LDS r,m LES r,m XLAT(XLATB) 功能: 查表指令 语法: XLAT XLAT m 算数运算指令 ADD,ADC 功能: 加法指令 语法: ADD OP1,OP2 ADC OP1,OP2 格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data 影响标志: C,P,A,Z,S,O SUB,SBB 功能:减法指令 语法: SUB OP1,OP2 SBB OP1,OP2 格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data 影响标志: C,P,A,Z,S,O

INC,DEC 功能: 把OP的值加一或减一 语法: INC OP DEC OP 格式: INC r/m DEC r/m 影响标志: P,A,Z,S,O NEG 功能: 将OP的符号反相(取二进制补码) 语法: NEG OP 格式: NEG r/m 影响标志: C,P,A,Z,S,O MUL,IMUL 功能: 乘法指令 语法: MUL OP IMUL OP 格式: MUL r/m IMUL r/m 影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志) DIV,IDIV 功能:除法指令 语法: DIV OP IDIV OP 格式: DIV r/m IDIV r/m CBW,CWD 功能: 有符号数扩展指令 语法: CBW CWD AAA,AAS,AAM,AAD 功能: 非压BCD码运算调整指令 语法: AAA AAS AAM AAD 影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD) DAA,DAS 功能: 压缩BCD码调整指令 语法: DAA DAS 影响标志: C,P,A,Z,S 位运算指令集 AND,OR,XOR,NOT,TEST 功能: 执行BIT与BIT之间的逻辑运算 语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m 影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位 SHR,SHL,SAR,SAL 功能: 移位指令 语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL

单片机汇编语言经典一百例

51单片机实用程序库 流水灯 程序介绍:利用P1 口通过一定延时轮流产生低电平 输出,以达到发光二极管轮流亮的效果。实际应用中例如:广告灯箱彩灯、霓虹灯闪烁。 程序实例() ORG 0000H AJMP MAIN ORG 0030H MAIN: 9 MOV A,#00H MOV P1,A ;灭所有的灯 MOV A,#B

MAIN1: MOV P1,A ;开最左边的灯 ACALL DELAY ;延时 RL A ;将开的灯向右边移 AJMP MAIN ;循环 DELAY: MOV 30H,#0FFH D1: MOV 31H,#0FFH D2: DJNZ 31H,D2 DJNZ 30H,D1 RET END 方波输出 程序介绍:口输出高电平,延时后再输出低电 平,循环输出产生方波。实际应用中例如:波形发生器。

程序实例(): ORG 0000H MAIN: ;直接利用口产生高低电平地形成方波步移位 ;显示个,十,百,千算机的内部计算都是二进 制,而二进制每除一个2,实际上是向右移一次。所以为了计算方便,我们选择取6个数,最后在算除法的时候,只需要用单片机自带的右移位命令移2次就行了。 27 十六进制六位数加法(数码显示) 程序实例: ORG 0000H MAIN: ADNUMBER EQU 30H ;AD转换值 ADDNUMBER EQU 31H ;加数值1

ADL EQU 32H ;// ADH EQU 33H ;ADL转换高低位值 DISL EQU 34H ;// DISH EQU 35H ;显示高低位值 ADDTOTAL EQU 36H ;第一次AD转换值ADDJW EQU 37H ;加法进位数 ADDHOLD EQU 38H ADDFLAG EQU 39H ;加标志 ENDFLAG EQU 40H ;赋初值//////////////////////////////////////////// MOV ADDHOLD,#00H MOV ADDNUMBER,#00H MOV ADL,#00H MOV ADH,#00H MOV DISL,#00H

avr单片机看门狗程序

单片机看门狗程序 /*此程序实现单片机"看门狗"WDT的功能*/ #include "p18f458.h" unsigned long i; /*系统初始化子程序*/ void initial() { TRISD = 0X00; /*D口设为输出*/ } /*延时子程序*/ void DELAY() { for (i=19999;--i;) continue; } /*主程序*/ main () { initial(); /*初始化,设定看门狗的相关寄存器*/ PORTD = 0X00; /*D口送00H,发光二极管亮*/ DELAY(); /*给予一定时间的延时*/ PORTD = 0XFF; /*D口送FFH,发光二极管灭*/ while(1)

{ ; } /*死循环,等待看门狗溢出复位*/ } -------------------汇编语言版本的单片机看门狗程序---------------- ;此程序实现"看门狗"WDT的功能 ;此单片机看门狗由https://www.sodocs.net/doc/8910340166.html,独家提供 LIST P=18F458 INCLUDE "P18F458.INC" DEYH EQU 0X20 DEYL EQU DEYH+1 ORG 0X00 GOTO MAIN ORG 0X30 ;*************初始化子程序***************** INITIAL CLRF TRISD ;D口设为输出 RETURN ;**************延时子程序************************** DELAY MOVLW 0XFF MOVWF DEYH AGAIN1

单片机主要使用汇编语言

1.单片机主要使用汇编语言,而编写汇编语言程序设计人员必须精通 (指令系统)和(单片机硬件结构)。 2.CHMOS工艺是(CMOS)工艺和(HMOS)工艺结合,具有(低功 耗)的特点。 3.与8051比较80C51的最大特点是(使用CHMOS工艺)。 4.MCS—51单片机的时钟电路包括2部分,即芯片内的(高增益反相 放大器)和芯片外跨接的(晶体振荡器)与(微调电容)。 5.在MCS—51中,位处理器的数据位存储空间是由(专用寄存器)的 可寻址位和内部RAN为寻址区的(128)个位。 6.MCS—51的4个I/O口中,P0是真正的双向口,而其它的口则为准 双向的,这一区别在口线电路结构中表现在(口的输出缓冲器)的 不同上。 7.在寄存器间接寻址方式中,其“间接”体现在指令中寄存器的内容 不是操作数,而是操作数的(地址)。 8.在直接寻址方式中,只能使用(8)位二进制数作为直接地址,因此 其寻址对象只限于(内部RAM)。 9.在变址寻址方式中,以(累加器A)作变址寄存器,以(DPTR)或 (PC)作基址寄存器。 10.在相对寻址方式中,寻址得到的结果是(程序转移的目的地址)。 11.中断技术是解决资源竞争的有效方法,因此可以说中断技术实质上 是一个资源(共享)技术。 12.中断采样用于判断是否有中断请求信号,但MCS——51中只有(外 中断)才有中断采样的问题。 13.响应中断后,首先把(PC)内容压入堆栈,然后把长指令送(PC), 使程序转向(程序存储器)中的地址区。 14.从单片机的角度看,连接到数据总线的输出口应具有(锁存)功能, 连接到数据总线的输入口应具有(三态缓冲)功能。 15.在MCS—51单片机系统中,采用的编址方式是(统一编址方式)。 16.在查询和中断两种数据输入输出控制方式中,效率较高的是(中断 方式)。 17.输入口扩展是为了实现数据的(缓冲)功能,输出口扩展是为了实 现数据的(锁存)功能。 18.异步串行数据通信侦格式由(起始)位、(数据)位、(奇偶校验) 位和(停止)位组成。 19.串行接口电路的主要功能是(串行)化和(反串行)化,把侦中格 式信息滤除而保留数据位的操作是(反串行)化。 20.MCS—51的串行口在工作方式0下,是把串行口作为(同步移位) 寄存器使用。在串入并出移位下作(并行输出)口使用,在并入串 出移位下作(并行输入)口使用。 21.使用定时器/计数器1设置串行通信波特率时,应把定时器/计数器1 设定为工作方式(2),即(自动重新加载)方式。 22.D/A转换必须设置数据锁存器,这是因为(转换需要一定时间才能 完成,数字量需要稳定一段时间)。 23.对于电流输出的D/A转换器,为了得到电压的转换结果,应使用(运 算放大器)。 24.在脉冲调控法控制电机启动和调节电机转速的控制电路中,可使用 D/A转换器产生(调控脉冲)。 25.使用双缓冲方式的D/A转换器,可以实现多路模拟信号的(同步) 输出。 26.A/D转换器,按转换原理可分为4种,即(计数)式、(双积分)式、 (涿次逼近)式和(并行)式。 27.A/D转换器芯片ADC0809中,可作为查询的状态标志,可作为中断 请求信号使用的(转换结束)信号。28.把数/模转换器转换的数据传送给单片机,可使用的控制方式有(定 时传送)、(查询)和(中断)3中。 29.假定累加器A是内容为30H,执行指令:1000H:MOVC A,·A+PC 后把(1031H)单元送A中。 30.DPTR内容8100H,A内容40H执行MOVC A,·A+DPTR后送入 A的是(8140H)单元的内容。 31.SP=60H,ACC=30H,B=70H,执行PUSH ACC PUSH B后SP 为62H,61H为30H,62H为70H。 32.SP=62H,(61H)=30H,(62H)=70H执行POP DPH POP DPL后 DPTR为7030H,SP为60H。 33.A=50H,B=0A0H执行MUL AB后,B为32H,A为00H,CY为0, OV为1。 34.A=0FBH,B=12H执行DIV AB后,A为0DH,B为11H,CY为0, OV为0。 35.A=83H,R0=17H,(17H)=34H,执行ANL A,#17H ORL 17H, A XRL A,@R0 CPL A 后,A的内容为(CBH)。 1.80C51与87C51的区别在于(内部程序存储器的类型不同)。 2.80C51芯片采用的半导体工艺是(CHMOS)。 3.对程序计数器PC的操作(是自动进行啊)。 4.单片机程序存储器的寻址范围由PC决定,MCS—51的PC为16位, 因此其寻址范围是(64KB)。 5.PC和DPTR的结论中错误的是(它们都具有加“1”功能)。 6.不属于位处理器资源的是(通用寄存器的可寻址位)。 7.在相对寻址方式中,“相对”是指相对于(当前指令的末地址)。 8.对程序存储器的读操作,只能使用(MOVC指令)。 9.执行返回指令时,返回的断点是(调用指令下一条指令的首地址)。 10.可以为访问程序存储器提供和构成地址的有(PC、A、DPTR)。 11.原来寄存器0组为当前寄存器,现要改1组为当前寄存器组,不能 使用指令(MOV PSW。3,1)。 12.不是给程序存储器扩展使用的是(/WR). 13.不是给数据存储器扩展使用的是(/EA). 14.2片INTEL2732(4K×8),除应使用P0的8条外,还至少使用P2口的 口线(5条). 15.中断查询,查询的是(中断标志位). 16.在MCS—51中需要外加电路实现的中断撤除的是(电平方式的外部 中断). 17.执行中断返回指令,要从堆栈弹出断点地址, 从堆栈弹出的断点地址 送给(PC). 18.MCS—51中断优先级叙述中,错误的是(同时同级的多中断请求,将形 成阻塞,系统无法响应). 19.三态缓冲器的输出应具有3种状态,其中不包括(低阻抗状态). 20.在接口电路中的“口”一定的一个(可编址的寄存器). 21.在LED显示中,为了输出位控和段控信号,应使用指令(MOVX). 22.在D/A转换\并分时输入数据应用中,它的2级数据锁存结构可以(保 证各模拟电压能同时输出). 23.把DAC0832连接双缓冲方式数据转换中,错误的是(在程序中使用一 条MOVX指令输出数据). 24.执行MOV SP,#3AH/ MOV A,#20H / MOV B,#30H/ PUSH ACC/ PUSH B/ POP ACC/ POP B后,A和B的内容为(30H 20H) 1.MCS—51单片机的/EA信号有何功能?在使用8031时/EA信 号引脚如何处理? 答:/EA访问程序存储器控制信号,当/EA信号为低电平时,则对RO M的读操作限定在外部程序存储器,而当/EA信号为高电平时,则对RO M的读操作的从内部程序存储器开始,并可延续至外部程序存储器.在 使用8031时/EA信号引脚应接地. 2.内部RAM低128单元划分为哪3个主要部分?说明个部分的 使用特点答:分为寄存器区\位寻址区\用户RAM区 寄存器区:一般有2种使用方法1是以寄存器的形式使用,用寄 存器符号表示,2是以存储单元的形式使用,以单元地址表示. 位寻址区:一种是以位地址的形式,另一种是以存储单元地址加位 的形式表示. 用户RAM区:只能以存储单元的形式使用,其它没有任何规定和 限制. 3.堆栈有哪些功能?堆栈指示器(SP)的作用是什么?在程序设计 时,为什么要对SP重新赋值? 答:堆栈功能:保护断点和保护现场. SP的作用:为了指示栈顶地址所以要设置堆栈指示器(SP) SP的内容一经确定,堆栈的位置也就跟着确定下来,因为堆栈的 位置的浮动的,所以要对SP的初始化赋不同的值. 4.使单片机复位有几种方法?复位后机器的初始状态如何? 答:复位操作有上电自动复位和按键手动复位两重方式.. 复位后单片机 进入初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单 元开始执行程序. 1.把长度为10HD的字符串从内部RAM的输入缓冲区inbuf向设在外部 RAM的输出缓冲区outbuf进行传送,一直进行到遇见回车符CR或整个字 符串传送完毕。 MOV R0,#inbuf/ MOV DPTR,#outbuf/ MOV R,#10H/ LOOP1:MOV A, @R0/ CJNE A,#0DH,LOOP2/ SJMP HERE/ LOOP2:MOVX @DPTR A/ INC R0/ INC DPTR/ DJNZ R1,LOOP1/HERE:SJMP HERE / END 2.内部RAM从list单元开始存放一正数表,表中之数作无序排列,并以“— 1”作结束标志。找出最小数。 MOV R0,#list/ LOOP1:MOV A,@R0/ CJNE A,#0FFH,LOOP2/ SJMP HERE/ LOOP2:INC R0/ MOV R1,A/ CLR C/ SUBB A,@R0/ JC LOOP3/ MOV A,@R0/ LOOP3:INC R0/ MOV A,R1/ SJMP L1/ HERE: SJMP HERE/ END 3.搜索一串ASCII码字符中最后一个非空格字符,字符串从外部RAM8100H 单元开始存放,并用一个回车符(0DH)作结束。编程实现搜索并把搜索 到的非格字符的地址存入内部RAM单元40H和41H中,其中高字节放入 41H单元。 MOV DPTR,#8100H/ LOOP1:MOVX A,@DPTR/ INC DPTR/ CJNE A, #0DH,LOOP1/ LOOP2:DEC DPL/ MOVX A,@DPTR/ CLR C/ SUBB A, #20H/ JZ LOOP2/ MOV 41H,DPH/ MOV 40H,DPL/ SJMP $/ END 4.从内部RAM20H单元开始存放一组带符号数,字节个数存在1FH中。请 统计出其中大于0、等于0和小于0的数的数目,并把统计结果分别存入 ONE、TWO、THREE3个单元中。 MOV R0,#20H/ MOV ONE,#00H/ MOV TWO,#00H/ MOV THREE, #00H/ L0:MOV A,@R0/ JNZ L1/ INC TWO/ SJMP L2/ L1:JNB ACC.7, L3/ INC THREE/ SJMP L3/ L3:INC ONE/ L2:INC R0/ DJNZ 1FH, L0/ HERE:SJMP HERE 5.5个双字节数,存放在外部RAM从barf开始的单元中,求它们和,把和 存放在sum单元中,请编程实现。 MOV R0,#barf/ MOV R3,#05H/ MOV R1,#SUM/ MOV R2,#03H/ CLR A/ L1:MOV @R1,A/ DJNZ R2,L1/ L2:CLR C/ MOV R1, #SUM/ MOV A,@R1/ SDDC A,@R0/ MOV @R1,A/ INC R0/ INC R1/ MOV A,@R0/ MOV A,R1,A/ INC R0/ MOV A,#00H/ MOV @R1,A/ INC R0/ DJNZ R3,L2 HERE:SJMP HERE 6.有晶振频率为6MHZ的MCS—51单片机,使用定时器0以定时方法在P1.0 输出周期为400us,占空比为10:1的矩形脉冲,以定时工作方式2编程实现. X1=28-20=236=0ECH X2=28-180=76=4CH ORG 0000H/ AJMP MAIN/ ORG 000BH/ AJMP S1/ ORG 0500H/ MAIN:MOV TMOD,@#02H/ SETB P1.0/ MOV TL0,#0ELH/ MOV TH0,#4CH/ MOV A,#0ECH/ SETB EA/ SETB ET0/ SETB TL0/ HERE:SJMP HERE/ ORG 06OOH/ S1:CPL P1.0/ XCH A,TH0/ RETI 5.什么是指令周期,机器周期和时钟周期?如何计算机器周期的确切时间? 答:指令周期的最大的时序定时单位,执行一条指令所需要的时间称之为指令 周期. 规定一个机器周期的宽度为6个状态,并依次表示为S1~S6.由于一个状态 又包括2个节拍,因此一个机器周期总共有12个节拍,分别记作 S1P1,S1P2,…….S6P2.由于一个机器周期共有12个振荡脉冲周期,因此机 器周期就是振荡脉冲的十二分频.当振荡脉冲频率为12MHZ时,一个机器 周期为1us,当震荡脉冲频率为6MHZ时,一个机器周期为2us. 6.定时的方法有? 答:软件定时;硬件定时;可编程定时器定时. 7.中断响应是有条件的,当存在哪些情况时,中断响应被封锁? 答○1CPU正处在为一个同级或高级的中断服务中;○2查询中断请求的机器 周期不是当前指令的最后一个机器周期;○3当前指令是返回指令(RET,RETI) 或访问IE、IP的指令. 在MCS-51单片机系统中,外接程序存储器和数据存储器共用16位地址线 和8位数据线,为什么不会冲突? 答:指令区分,读外部ROM使用指令“MOVC”读外部RAM使用指令 “MOVX”选通信号,外部ROM的选通信号为PSEN,外部RAM的选 通信号为RD和WR

相关主题