使用MCS-51的P0口控制八个发光二极管LED相邻四个二极管为一组使两组每隔1s交替发光一次周而复始编写程序
以下是使用MCS-51的P0口控制八个发光二极管LED,相邻四个二极管为一组,使两组每隔1s交替发光一次的程序:
ORG 0H
MOV P0, #0FH ; 初始化P0口为输出,初始状态两组LED均不亮
LOOP:
MOV A, #0FFH ; 将A寄存器赋值为0FFH
ACALL DELAY ; 延时1s
MOV P0, #0FH ; 两组LED均不亮
MOV A, #0FH ; 将A寄存器赋值为0FH
ACALL DELAY ; 延时1s
MOV P0, #F0H ; 第一组LED亮,第二组LED不亮
MOV A, #0FFH ; 将A寄存器赋值为0FFH
ACALL DELAY ; 延时1s
MOV P0, #0FH ; 两组LED均不亮
MOV A, #0FH ; 将A寄存器赋值为0FH
ACALL DELAY ; 延时1s
SJMP LOOP ; 跳转到LOOP标签处,周而复始
DELAY:
MOV R7, #30H ; 将R7寄存器赋值为30H
DELAY_LOOP:
MOV R6, #255 ; 将R6寄存器赋值为255
DELAY_LOOP1:
MOV R5, #255 ; 将R5寄存器赋值为255
DELAY_LOOP2:
DJNZ R5, DELAY_LOOP2 ; R5减1,若不为0则跳转到DELAY_LOOP2标签处
DJNZ R6, DELAY_LOOP1 ; R6减1,若不为0则跳转到DELAY_LOOP1标签处
DJNZ R7, DELAY_LOOP ; R7减1,若不为0则跳转到DELAY_LOOP标签处
RET ; 返回调用DELAY子程序的指令处
以上程序中,DELAY子程序用来实现延时,即程序中的1s延时。在主程序中,先将P0口初始化为输出,并将P0口赋值为0FH,即两组LED均不亮。然后进入一个循环,先延时1s,再将P0口赋值为F0H,即第一组LED亮,第二组LED不亮,再延时1s,将P0口赋值为0FH,即两组LED均不亮,再延时1s,将P0口赋值为F0H,周而复始。这样就实现了两组LED每隔1s交替发光一次的效果
原文地址: https://www.cveoy.top/t/topic/fHmt 著作权归作者所有。请勿转载和采集!