《任务二 单片机控制流水灯》由会员分享,可在线阅读,更多相关《任务二 单片机控制流水灯(23页珍藏版)》请在金锄头文库上搜索。
1、任务二任务二 单片机控制流水灯单片机控制流水灯本文由 bgy20083313203 贡献ppt 文档可能在 WAP 端浏览体验不佳。建议您优先选择 TXT,或下载源文件到本机查看。国家级“十一五”规划教 国家级“十一五” 材任务二 单片机控制流水灯2.1 2.2 2.3 2.4 2.5 控制转移指令及分支程序 子程序 逻辑运算指令 单片机时钟电路及时钟周期 单片机控制流水灯任务二 单片机控制流水灯国家级“十一五”规划教 国家级“十一五” 材任务描述由单片机的并行 I/O 口接 8 个发光二极管, 实现发光二极管每次点亮两只、四只或从 外向内、从内向外的流水灯。任务二 单片机控制流水灯国家级“十
2、一五”规划教 国家级“十一五” 材2.1 控制转移类指令及分支程序2.1.1 控制转移指令 2.1.2 分支程序任务二 单片机控制流水灯国家级“十一五”规划教 国家级“十一五” 材2.1.1 控制转移类指令1无条件转移指令 指当程序执行到该指令时, 无条件转移到指令所提供地址处执行。无条件转移指 令共有 4 条: 长转移指令 短转移指令 绝对转移指令 散转指令。任务二 单片机控制流水灯国家级“十一五”规划教 国家级“十一五” 材(1)长转移指令 )LJMP addr16 ;(PC)addr16该指令执行后将 16 位地址(addr16)传送给 PC, 从而实现程序转移到新的地址开始运行。 该指
3、令可实现 64KB 的范围内任意转移。 该指令不影响标志位。任务二 单片机控制流水灯国家级“十一五”规划教 国家级“十一五” 材(2)绝对转移指令AJMP addr11;(PC)(PC)+2,(PC100) addr11 ; , PC1511 信息和指令提供低 11 位地址组成 16 位转移目标地址,使程序无条件转向同 一 2KB 存储空间目的地址执行。 本指令不影响标志位。任务二 单片机控制流水灯1000H 1030H 国家级“十一五”规划教 国家级“十一五” 材(跳转上限)AJMP 0456H PCPC+2=1032H (跳转起始地址) 1456H 2KB 5 (高 5 位地址相同)17F
4、FH(跳转下限)本指令的执行前:PC 的高 5 位为:00010,而指令中提 供的 11位地址为:100 0101 0110,则指令执行后:PC 的值为:0001 0100 0101 0110,即 1456H。任务二 单片机控制流水灯国家级“十一五”规划教 国家级“十一五” 材(3)短转移指令SJMP rel;(PC)(PC)+2,(PC)(PC) +rel ; ,指令中 rel 是一个有符号数偏移量,其范围为-128+127,以补码 形式给出。若 rel 是正数,则向前转移;若 rel 是负数,则向后转移。 1)一条带有 FEH 偏移量的 存储器 SJMP 指令,将实现无限循环。 128 这
5、是因为 FEH 是-2 的补码,目 的地址=PC+2-2=PC,结果转 PC 80H 向自己,无限循环,一般在程 PC+1 rel 序用 SJMP $来表示 SJMP PC+2 0FEH。 +127 2)该指令中寻址方式称相对 寻址方式。 任务二 单片机控制流水灯(4)散转指令国家级“十一五”规划教 国家级“十一五” 材JMP A+DPTR;(PC)(A)+(DPTR) ; 该指令执行时,把累加 器 A 中的 8 位无符号数与 PC JMP A+DPTR DPTR 中 16 位数相加, 其中装入程序计数器 PC, DPTR 控制程序转到目的地址 执行程序。整个指令的执行过程中, (A)+(DP
6、TR)PC 不改变累加器 A 和DPTR 的内容。 256B任务二 单片机控制流水灯国家级“十一五”规划教 国家级“十一五” 材 例 2-1 某单片机应用系统有 16 个键,对应的键码值(00H0FH)存放在 R7 中,16 个键处理程序的入口地址分别为 KEY0, KEY1, ,KEY15。要求按下某键,程序即转移到该键的 相应处理程序执行。解:预先在 ROM 中建立一张起始地址为 KEYG 的转移表:AJMP KEY0,AJMP KEY15,利用散转指令即可实现多路分支 转移处理。 MOV A,R7 RL A ;由于 AJMP 指令为双字节指令,键值乘 2 倍 MOV DPTR,#KEYG
7、 ;转移入口基地址送 DPTR JMP A+DPTR KEYG:AJMP KEY0 AJMP KEY1 AJMP KEY15任务二 单片机控制流水灯国家级“十一五”规划教 国家级“十一五” 材2条件转移指令条件转移指令是当满足给定的条件时,程序转移 到目的地址去执行;条件不满足则顺序执行下一 条指令。 条件转移指令分为: 累加器 A 判零转移指令 比较转移指令 循环指令。任务二 单片机控制流水灯国家级“十一五”规划教 国家级“十一五” 材(1)累加器 A 判零转移指令 )累加器 判零转移指令JZ rel ;(PC) (PC) +2 当 (A) = 0, (PC) = (PC) + rel,即转
8、移 , , 当 (A) 0, 则程序顺序执行 , JNZ rel ;(PC) (PC) +2 当 (A) 0, (PC) = (PC) + rel,即转移 , , 当 (A) = 0, 则程序顺序执行 , 执行这两条指令时,首先对累加器 A 内容进行判断, 满足条件则转移,否则程序顺序执行。 rel 为补码形式的相对地址。rel=(目的地址-PC 当前值) 的补码。任务二 单片机控制流水灯国家级“十一五”规划教 国家级“十一五” 材(2) 比较转移指令CJNE A , direct, rel CJNE A , data, rel CJNE Rn , data, rel rel CJNE Ri
9、,data, rel 比较前面两个操作数的大小, 如果它们的值不相等 则转移。 转移地址的计算方法与上述两条指令相同。 如果第一个操作数(无符号整数)小于第二个操作 数, 则进位标志 Cy 置“1”, 否则清“0”, 但不影响任 何操作数的内容。任务二 单片机控制流水灯国家级“十一五”规划教 国家级“十一五” 材(3) 循环控制转移指令DJNZ Rn, rel ;(PC) (PC)+2, (Rn)(Rn)-1 , 当(Rn)0 时, (PC) (PC) +rel; 当(Rn)=0 时, 程序顺序执行。 DJNZ direct,rel;(PC)(PC)+3,(direct)(direct)-1
10、, ; 当(direct)0 时, (PC) (PC) +rel; 当(direct)=0 时, 程序顺序执行。 执行本指令时,将第一个操作数减 1 后判断结果是否为0,若 为 0,则终止循环程序段的执行,程序往下顺序执行;若不为 0, 则转移到目的地址继续执行循环程序段。用两条指令可以构成 循环程序,循环次数就是第一个操作数的值。rel 为相对偏移量。任务二 单片机控制流水灯国家级“十一五”规划教 国家级“十一五” 材2.1.2分支程序程序的执行是按照指令的书写顺序进行的,但 根据实际需要也可以改变程序的执行顺序,这 种程序结构就属于分支结构。 分支结构可以分成: 单分支 双分支 多分支条件
11、满足吗? 条件满足吗? NY 程序段 AN条件满足吗?Y程序段 0程序段 1单分支结构 分支号 k=? =0 程序段 0 =1 程序段 1 多分支结构 双分支结构=n 程序段 n任务二 单片机控制流水灯国家级“十一五”规划教 国家级“十一五” 材分支程序常利用条件转移指令实现根据条件对程序的执行情况进行判断,满足 条件则转移,否则顺序执行。 用于判断分支转移的指令有:JZ、JNZ、JC、 JNC、JB、JNB、JBC、CJNE、DJNZ、JMP A+DPTR 等。任务二 单片机控制流水灯1单分支程序国家级“十一五”规划教 国家级“十一五” 材例 2-2 将 1 位十六进制数(即 4 位二进制数
12、)转换成相应的ASC码。 设十六进制数存放在 R0 中,转换后的 ASC码存放于 R2中。 HASC:MOV A,R0 ;取 4 位二进制数 ANL A,#0FH ;屏蔽掉高 4 位 PUSH ACC ;4 位二进制数入栈 CLR C ;清进(借)位位 SUBB A,#0AH;用借位的状态判断该数在 09 还是 AF 之间 POP ACC ;弹出原 4 位二进制数 JC LOOP ;借位位为 1,跳转至 LOOP ADD A,#07H ;借位位为 0,该数在 AF 之间,应加 37H,此步先加 7H LOOP:ADD A,#30H ;加 30H MOV R2,A任务二 单片机控制流水灯国家级“
13、十一五”规划教 国家级“十一五” 材2.双分支程序 双分支程序例 2-3 x, y 均为 8 位二进制数, 设 x 开始 Y X=80? N X 80 x 0, 则 R101H ; 相等, R1 0任务二 单片机控制流水灯国家级“十一五”规划教 国家级“十一五” 材 空调制冷控制案例。 例 2-4 空调制冷控制案例。在空调制冷控制系统的案例中,空调制冷是通过启动压缩机来完成的,即当环境温度 空调制冷是通过启动压缩机来完成的, 超过预置值时,启动压缩机实现制冷。 超过预置值时,启动压缩机实现制冷。ALE P1 8 INT0 INT1P2 8 P0 P3.0 P3.7 P3.1 XTAL1 8 X
14、TAL2 0 C VCC 5 RSTR8Y A 大于预置值? N压缩机 MR8启动压 缩机 220V停止压 缩机继电器1EA +5V指示灯任务二 单片机控制流水灯设定读取的室内环境温度值存放在 A 中,预置温度存 放在 R7中,压缩机是利用电磁继电器控制的,而继电 器由 P3.7 驱动。ORG 0200H COMPRESSOR:CJNE A,R7 ,CON ;与设定温度比较 SJMP STOP CON: JC STOP ;启动压缩机 ;停止压缩机国家级“十一五”规划教 国家级“十一五” 材SETB P3.7SJMP TIMEEND STOP: TIMEEND: CLR P3.7 RET任务二
15、单片机控制流水灯3. 散转程序设计国家级“十一五”规划教 国家级“十一五” 材跳转指令 JMPA+DPTR 可以很容易地实现散转功能。 该指令把A 的 8 位无符号数与 16 位数据指针的内容相加, 并把 相加的结果装入程序计数器 PC,控制程序转向目标地址去执行。 特点:转移的目标地址不是在编程或汇编时预先确定的,而 是在程序运行过程中动态地确定的。目标地址是以数据指针 DPTR 的内容为起始的 256字节范围内的指定地址,即由 DPTR 的内容决定分支转移程序的首地址, 由累加器 A 的内容来动态选 择其中的某一个分支转移程序。任务二 单片机控制流水灯国家级“十一五”规划教 国家级“十一五
16、” 材例 2-5 根据工作寄存器 R0 内容的不同, 使程序转入 相应的分支。 (R0)=0 对应的分支程序标号为 PR0; (R0)=1 对应的分支程序标号为 PR1; (R0)=N 对应的分支程序标号为 PRN。任务二 单片机控制流水灯国家级“十一五”规划教 国家级“十一五” 材LP0: MOV DPTR, TAB ; 取表头地址 MOV A, R0 ADD A, R0 ; R0 内容乘以 2 JNC LP1 ; 无进位转移 INC DPH ; 加进位位 LP1: JMP A+DPTR ; 跳至散转表中相应位置 TAB: AJMP PR0 本例程序仅适用于散转 AJMP PR1 表首地址 TAB 和处理程 序入口地址 PR0, PR1, , PRN 在同一个 2 KB 范围 AJMP PRN 的存储区内的情形。 任务二 单片机控制流水灯若超出 2