- 11
- 0
- 约1.76万字
- 约 95页
- 2020-12-30 发布于安徽
- 举报
第4节 键盘和LED显示设计 ORG 0000H LJMP START ORG 0030H START: MOV P0,#12H ;从P0口输出BCD码12 LCALL DELAY ;延时 MOV P0,#34H ;从P0口输出BCD码34 LCALL DELAY MOV P0,#56H ;从P0口输出BCD码56 LCALL DELAY MOV P0,#78H ;从P0口输出BCD码78 LCALL DELAY SJMP START ;循环 DELAY: MOV R5,#20 ;延时子程序 D2: MOV R6,#80 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,D2 RET END 演 示 循环显示0~9 ORG 0000H LJMP START ORG 0030H START: MOV DPTR,#TABLE ;DPTR指向段码表首地址 S1: MOV A,#00H MOVC A,@A+DPTR ;查表取得段码 CJNE A,#01H,S2 ;判断段码是否为结束符 SJMP START S2: MOV P0,A ;段码送数码管显示 LCALL DELAY ;延时 INC DPTR SJMP S1 DELAY: MOV R5,#20 ;延时子程序 D2: MOV R6,#20 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 DJNZ R5,D2 RET TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;0-9共阴段码表 DB 01H ;结束符 END 指令介绍 MOVC INC 伪指令DB 伪指令 (3) 定义字节伪指令DB。 格式: [标号: ]DB 项或项表 其中项或项表指一个字节, 或用逗号分开的字符串, 或以引号括起来的字符串(一个字符用ASCII码表示, 就相当于一个字节)。 该伪指令的功能是把项或项表的数值(字符则用ASCII码)存入从标号开始的连续存储单元中。 例如: ORG 2000H TAB1: DB 30H, 8AH, 7FH, 73 DB ′5′,′A′,′BCD′ 由于ORG 2000H, 所以TAB1的地址为2000H, 因此以上伪指令经汇编以后, 将对 2000H开始的若干内存单元赋值: (2000H) = 30H (2001H) = 8AH (2002H) = 7FH (2003H) = 49H ; 十进制数 73 以十六进制数存放 (2004H) = 35H ; 数字 5 的ASCII码 (2005H) = 41H ; 字母A的ASCII码 (2006H) = 42H ; ′BCD′中B的ASCII码 (2007H) = 43H ; ′BCD′中C的ASCII码 (2008H) = 44H ; ′BCD′中D的ASCII码 (4) 定义字伪指令DW。 格式: [标号: ]DW 项或项表 DW伪指令与DB的功能类似, 所不同的是DB用于定义一个字节(8 位二进制数), 而DW则用于定义一个字(即两个字节, 16 位二进制数)。 在执行汇编程序时, 机器会自动按高 8 位先存入, 低 8 位后存入的格式排列, 这和MCS—51 指令中 16 位数据存放的方式一致。 例如: ORG 1500H TAB2: DW 1234H, 80H 汇编以后: (1500H)=12H, (1501H)=34H, (1502H)=00H, (1503H)=80H。 程序存储器向累加器A传送数据指令, 又称查表指令。 它采用变址寻址方式, 把程序存储器(ROM或EPROM)中存放的表格数据读出, 传送到累加器A。
原创力文档

文档评论(0)