LED实验&&I/O口实验--将 P0 作为输出口,连接 8 个 LED,编写程序,使 LED 循环点亮。(LED1 亮,其余灭->ED2 亮,其余灭……,如此循环 5 次后,进行全灭-全亮

实验三(硬件实验):I/O 接口实验 
一、实验要求:
将 P0 作为输出口,连接 8 个 LED,编写程序,使 LED 循环点亮。(LED1 亮,其余灭->LED2 亮,其余灭……,如此循环 5 次后,进行全灭->全亮闪烁,时间间隔为 500ms)。 
二、实验目的 
1、学习单片机的 I/O 口使用方法; 
2、学习延时程序的编写和使用; 
3、熟悉实验电路原理图,学习单片机硬件编程方法。
三、实验电路图 

电路图

实验流程设计:
这里写图片描述
实验代码:

/***************************************
定时器中断实验
Programed by Lee.rw,all right reserved
****************************************/
ORG 0000H
LJMP MAIN
/********************定时器0中断**************************/
ORG 000BH
LJMP T0_INT                     ;定时器0中断服务子程序


ORG 0100H
MAIN:
    MOV P1,#0FFH                ;初始全灭
    MOV A,#0FEH                 ;A中存要赋值给P1口的值以控制LED亮灭
    MOV R0,#27H                 ;循环39次左移即流水5次
    /*****************三个标志位*****************/
    MOV R1,#0H                  
    MOV R2,#0H
    MOV R3,#0H
START:
    MOV P1,A
    MOV B,#0AH                  ;循环10次
    /****************设置定时器工作方式和中断**************/
    SETB EA
    SETB ET0
    MOV TMOD,#01H               ;定时器0工作在方式一
    MOV TH0,#03CH               ;定时器初值,一次50ms,循环10次,500ms
    MOV TL0,#0AFH
    SETB TR0
HERE:
    SJMP HERE
    RET

T0_INT:
    MOV TH0,#03CH               ;重新装入初值
    MOV TL0,#0AFH
    DJNZ B,RETURN               
    MOV B,#0AH
    CJNE R3,#0H,JUDGE           ;判断五次流水是不是已经完成
    RL A
    DJNZ R0,RETURN              
    MOV R3,#01H
    MOV R1,#01H

JUDGE:
    CJNE R1,#0H,OFF             ;全灭
    CJNE R2,#0H,ON              ;全亮

ON:
    MOV A,#00H
    MOV R2,#0H
    MOV R1,#01H
    AJMP RETURN

OFF:
    MOV A,#0FFH
    MOV R1,#0H
    MOV R2,#01H

RETURN:
    MOV P1,A
    RETI

END 

下面是另一种运用延时子程序来达到目的的方法,因为太简单直接上代码,不再注释

ORG 0000H
LJMP MAIN

ORG 000BH
LJMP T0_INT


ORG 0100H
MAIN:
    MOV P1,#0FFH
    MOV A,#0FEH
    MOV P1,A
    MOV B,#0AH
    MOV R0,#27H
    SETB EA
    SETB ET0
    MOV TMOD,#01H
    MOV TH0,#03CH
    MOV TL0,#0AFH
    SETB TR0
HERE:
    SJMP HERE
    RET


T0_INT:
    MOV TH0,#03CH
    MOV TL0,#0AFH
    DJNZ B,LOOP
    MOV B,#0AH
    RL A
    MOV P1,A
    MOV A,R0
    JZ FUN1
    MOV A,P1
    DEC R0
LOOP:
    RETI

FUN1:
    MOV P1,#00FFH
    LCALL DELAY
    MOV P1,#00H
    LCALL DELAY
    SJMP FUN1


DELAY:
    DEL:MOV R7,#10
    DEL1:MOV R6,#200
    DEL2:MOV R5,#123
    NOP
    DEL3:DJNZ R5,DEL3
    DJNZ R6,DEL2
    DJNZ R7,DEL1
    RET

END

猜你喜欢

转载自blog.csdn.net/lrwwll/article/details/72772403