维普资讯http://www.cqvip.com,给你一个网站seo如何做

给你 3
本讲介绍汇编语言程序设计及指令。
要进行单片机设计,首先要学会编写程序。
单片机它必须配合各种各样的软件才能发挥其运算和控制功能。
汇编语言是一种采用助记符表示指令、数据和地址来设计程序的语言。
例如MoVA,#0AH表示取一个(立即)数0A(十六进制,如转成二进制为00 ̄1010)传送到A累加器。
汇编语言指令的一般格式如下: [标号:]操作码助记符[第一操作数][,第二操作数][,第三操作数][;注释] 其中带方括号[..·]的部分为可选项。
标号是表示该指令位置的符号地址。
它是以英文字母开始的由1~6个字母或数字组成的字符串,并以“:”结尾。
通常在子程序人口或转移指令的目标地址处才赋予标号。
操作码助记符是表示指令操作功能的英文缩写。
每条指令都有操作码。
它是指令的核心部分。
操作数字段表示指令操作所需要的操作数或操作数的地址。
操作数字段的表达形式与寻址方式有关。
指令的操作数可以是1个、2个或3个,有些指令可能没有操作数。
操作数与操作数之间以“,”分隔,操作码与操作数之间以空格分隔。
注释字段是用户给该条指令或该段程序的功能说明,是为了方便阅读程序的一种标注。
注释以“:”为开始。
注释部分不影响指令的执行。
在学习指令之前,先必须了解 一22一电子制作2000年第3期 维普资讯 维普资讯 节中直接给出。
因此叫立即数寻 址。
例如:M0V A,#data撑为立即 数标志,立即数data的范围是0~  FFH。
  2.直接寻址。
例如:M0V direct1,direct2这条指令的含义是 将地址direct2单元中的内容传送 给地址diI1ect1单元中。
  3.寄存器寻址 例如M0V A, Rn n=O,1,…7。
这条指令的含义 是将工作寄存器Rn中的内容传送 给累加器A。
  4.寄存器间接寻址。
例如: M0V A,@Ri i=l,2。
这条指令的 含义是将Ri中的内容取出,作为另 一个单元的地址,将此单元中的内 容取出传送到累加器A。
  5.位寻址。
例如: M0V c. 07H这条指令的功能是将内部 RAM2OH-q ̄-元的D7位(位地址为 O7H)的内容传送到位累加器C中。
  6.变址寻址。
变址寻址方式是 以DPTR或PC作基址寄存器,以累 加器A作变址寄存器,并以两者内 容相加形成的16位地址作为操作 数的地址 例如:M0VC A,@A+ DPTR;其功能是把DPTR和A的内 容相加,再把所得到的程序存储器 地址单元的内容送A。
变址寻址方 式只能对程序存储器进行寻址,或 者说它是专门针对程序存储器的 寻址方式。
  7.相对寻址。
相对寻址以程序 计数器PC的当前值作为基地址, 与指令中给定的相对偏移量rel进 行相加,把所得之和作为程序的转 移地址 例如:JZ 3OH 当A=O 时,PC—PC+2+rel;若A≠0,贝U  PC+一PC+2。
  讲了那么多,可能有的读者会 说,我还是云里雾里,一头雾水,舍 也搞不懂 .那也没关系,学单片机 一开始就是这样,还是让我们结合 程序与实验吧。
以后实验做多了, 再结合指令学习,就会逐步搞明白 的。
  打开Keil C51 Windows集 01 101 101,结果点亮的发光管右移  成开发环境,按讲座(二)的方法, 一位。
  先在我的文档中建立一个文件目  序号7:调用延时子程序DEL.  录(如S1).然后建立一个S1.uv2的 维持发光管点亮。
  工程项目.最后建立源程序文件  序号8:将立即数B6H传送到  ( ̄13S1.asm)。
输入以下源程序:  P1口,B6H的___二进制数为  序号:1 2  3 4 5 6 7  8  ORG 0000H: UMP MAIN:  ORG 030H: MAIN:MOV P1.#ODBH; ACALL DEL; MOV P1,#O6DH: ACALL DEL;  MOV P1,#OB6H;  11011011,点亮的发光管继续右移 
一 位。
  序号9:调用延时子程序DEI . 维持发光管点亮  序号10:跳转到主程序处循  环。
AJMP xx这条转移指令我们还  ; 未学到,以后再解释。
  9 ACALL DEL:  lO l1  AJMP MAIN; DEL: MOV R7.#OFFH:  12 l3 l4 15  DELl:MOV R6.#OFFH: DEL2:DJNZ R6,DEL2; DJⅣZ R7,DELl; RET;  序号11:延时子程序开始,将  立即数FFH传送给寄存器R7。
冒号  j  前的DEL为标号.  j  序号12:将立即数FFH传送给 { j 寄存器R6。
同理DELl为标号。
  序号13:将R6中的内容减1后  l6 END:  判断,若为0则程序向下执行;若不  编译通过后,将其烧录到 为0则跳转到DEL2处(即本身)执  89C51芯片中,将芯片插入到S1型 行。
  LED- ̄出试验板上(配套器材的供  序号14:将R7中的内容减1后  应消息见本刊1、2月的配文广告),! 判断,若为0则程序向下执行;若不  通电后会发现P1口的8个发光管每 为0则跳转到DEL处执行。
这样将  隔2个右循环点亮。
现在我们结合 总共做FFHxFFH(即256x256=  试验情况来详释一下程序。
  65536)次减1,用于增大延时时间  序号1(程序解释,以下同):程】  序号15:返回调用子程序处。
  序开始,ORG是一条伪指令,表示{  序号16:程序结束。
END也是  程序从 ̄O000H开始运行。
  一条伪指令,表示程序从这里结  序号2:跳转到MAIN主程序 束。
  处。
  现在我们弄明白了,只要改变  序号3:主程序MAIN从地址 传送给P1口的立即数,即可控制使  0030H开始  哪个发光管亮、哪个发光管灭 改  序号4:主程序开始后的第
一 变第一次、第二次、第三次传送给  条指令是将立即数DBH传送到P1 P1口的立即数数字,就可控制点亮  口,DBH的¨_ 进制数为11011011, 的发光管实现右循环或左循环 改  其中低电平0可将发光管点亮。
冒 变传送给R6、R7寄存器的立即数  号前的MAIN为标号,表示主程序 就可调整延时时间 你可以试一下  开始。
  改变这些立即数,看看有什么变  序号5:调用延时子程序DEL, 化,看能不能控制一组彩灯  维持发光管点亮(延时结束时从子  下面给出MCS-51内部的RAM  程序返回)。
ACALL xx这条调用指 和特殊功能寄存器SFR的数据传  令我们还未学到,以后再解释。
  』 送指令。
  序号6:将立即数6DH传送到j  1.以累加器为目的操作数  P1口,6DH的二进制数为  MOV A.Rn 表示将寄存  电子制作20o3年第3期 一23—  维普资讯 器Rn中的内容送累加器A。
  MOV A,direct表示将直接  :1 ̄tlkdireet中的内容送累加器A。
  MOV A,@Ri表示将寄存器 Ri中内容作为地:111:的单元内容送  累加器A。
  M0V A,#data表示将立即数 data送累加器A。
  2.以寄存器为目的操作数  MOV Rn,A 表示将累加器  A中的内容送寄存器Rn中。
  M0V Rn,direct表示将直接  地址单元direct中的内容送寄存器  Rn中。
  M0V Rn,#data表示将立即  数clata ̄ 器Rn中。
  3.以直接地址为目的操作数  MOV direct,A表示将累加器  A中的内容送直接地:111:单元direct  中。
  MOV direct,Rn表示将寄存  器Rn中的内容送直接地:111:单元 direct中。
  M0V direct2,direct 1表示  将直接地:111:单元direct1中的内容 送直接地址单元direct2中。
  MOV direct,@Ri表示将寄  存器Ri中内容作为地址的单元内  容送直接地址单元direct中。
  M0V direct,#data表示将立  即数data送直接地址单元direct中。
  4.以寄存器间接地:111:为目的  操作数  M0V@Ri,A表示将累加器  A中的内容送间接t ̄:llkRi中。
  MOV@Ri,direct表示将直  接地址单元direct中的内容送间接  地址Ri中。
  M0V@Ri,#data 表示将立  即数dataJ ̄_间接t ̄:llkRi中。
  5.16位数据传送  M0V DfrrR,#datal6表示将  16位二进制数传送到DPTR寄存器 中。
  为了学习:h-便,下面给出M0V  指令中操作数的各种组合关系。
 刚才我们做了单片机的输出  实验,是不可控的。
那么能不能由 输入信号去控制输Lp,信号,让单片 机受人的控制产生输Lp,信号,做到  可控呢?答案是肯定的,下面我们  再做一个实验。
输入以下源程序。
  序号:1 2 3 4 5 6  7 8 9 1O 11 12 13 14 15 16 17 18 19 2O 21 22 23 24 25 26 27 28 29  3O 31 32 33 34 35 36 37 38  ORG 000oH 【JMP MAIN: ORG O3OH: MAIN:MOV P3.#OCOH: ACALL DEI4MS: M0V P3.加FOH:  M0V A.P3; CJNE A,#0FDH,F1; AJMP MAIN: F1: MOV P3.#0F9H; ACALL DEL1S: MOV P3.#OA4H: ACALL DEL1S: M0V P3.#0BOH: ACALL DELIS: M0V P3,#O99H: ACALL DEL1S: M0V P3. )92H: ACALL DEL1S: M0V P3.#082H: ACALL DEL1S: M0V P3.加F8H: ACALL DEL1S: M0V P3.#08OH: ACALL DEL1S: M0V P3.#O9OH; ACALL DEL1S: AJMP MAIN; DEI4MS:M0V R7,#O4H;  DL0: M0V R6.#0FFH: DL1: DJNZ R6.DL1: DJNZ R7.DL0; RET: DEL1S:M0V!t5.OFFH: F2: ACALL DEI4MS: DJNZ R5.F2: RET: END  编译通过后,将其烧录到  89C51芯片中,将芯片插入 ̄llS2型 LED数码管输出试验板上,通电后  左边第一个数码管显示“0”。
这时 若按动S1~S12按键的一个,则数码  管以1秒的间隔显示“1、2…9”九个 数字,最后回停到“0”。
这样就能实 现输出的数字由人工输入触发。
  下面我们解释一下程序。
  序号1(程序解释,以下同):程序开始 序号2:跳转到MAIN主程序处。
 序号3:主程序MAIN从地址o03OH开始。
 序号4:P3口输出COH,数码管显示“0”。
 序号5:调用4Ⅱ 延时子程序,维持发光管 点亮。
 序号6:向P3口送FoH,准备读P3口的输 入状态。
 序号7:将P3口的输入状态读人累加器A。
 序号8:若A的内容(即读入的P3口状态) 等于FUH,说明无按键按下,程序向下执行;反 之有键按下则程序跳转到F1。
 序号9:跳转到主程序处循环。
 序号1O:将立即数f、9H传送给P3口,数码 管显示“1”。
 序号l1:调用延时1S子程序。
 序号12:将立即数A4H传送给P3口,数码 管显示“2”。
 序号13:调用延时1S子程序。
 序号14:将立即数BOH传送给P3f1,数码 管显示“3”。
 序号15:延时1s子程序。
 序号16:将立即数99H传送给P3口.数码 管显示“4”。
 序号17:调用延时1S子程序。
 序号18:将立即数92H传送给P3口,数码 管显示“5”。
 序号19:调用延时1S子程序。
 序号2O:将立即数82H传送给P3口,数码 管显示…6’。
 序号21:调用延时1S子程序。
 序号22:将立即数F8H传送给P3口,数码 管显示“7”。
 序号23:调用延时1S子程序 序号24:将立即数80H传送给P3u.数码 管显示“8”。
 序号25:调用延时1s子程序: 序号26:将立即数90H传送给P3口.数码 管显示…9’。
 序号27:调用延时1S子程序: 序号28:跳转到主程序处循环 序号29~33:延时4mS子程序 序号34~37:延时lS子程序: 序号38:程序结束 (下一讲继续介绍指令的学习及实验): 有关Keitc51软件及编程嚣邮购信息请见 上期介绍或打皂话向021—64066571咨询。

一  一24一电子嗣作2OO3年第3期 

标签: #域名 #网站推广 #网站 #搜索引擎排名 #如何选择 #网站 #域名 #宝贝