
单片机音响技术网 文章浏览次数:1020
程序如下:
MAIN: MOV P1,#0FFH (1)
CALL DELAY (2)
MOV P1,#00H (3)
CALL DELAY (4)
JMP MAIN (5)
DELAY:MOV R7,#250 (6)
D1: MOV R6,#250 (7)
D2: DJNZ R6,D2 (8)
DJNZ R7,D1 (9)
RET (10)
END (11)
程序分析:
(1).将立即数0FFH送到P1口,即让P1口的LED全熄灭.(P1.0~P1.7)
(2).调用延时子程序.
(3)将立即数00H送到P1口,即让P1口的LED全亮(P1.0~P1.7)
(4).调用延时子程序
(5).跳转到主程序
(6).延时子程序开始,将立即数250传送给寄存器R7.
(7).将立即数250传送给寄存器R6.
(8).将R6中的内容减一后判断,若为0则程序向下执行;若不为0则跳转到D2处(即本行)执行.
(9).将R7中的内容减一后判断,若为0则程序向下执行,若不为0则跳转到D1处执行.
(10).返回调用子程序处.
(11).程序结束.
程序分析
P1是P1.0~P1.7全体的代表,一个符号P1表示了以P1.开头的8个引脚。MOV指令的用途是数据传递,即把0FFH送到P1端口和把00H送到P1端口,那么0FFH和00H又分别代表什么含义呢?0FFH用二进制表示就是11111111B,而00H用二进制表示就是00000000B。因此,送0FFH就是让所有P1.X引脚输出高电平,即让LED全灭,而送00H就是让LED全亮。
程序中的数字FFH前面有一个0,这是汇编软件所要求的,对于十六进制而言,除了0~9这10个数字外,还用了A~F作为基本数字。如果用来表示数字的第一个字符不是0~9这10个阿拉伯数字中的一个,就要在它前面加一个0,表示这是一个数字,而不是字符。
摘录:半键纵横; 责任编辑:mcu51av 2007-11-10
