×
单片机 > 单片机程序设计 > 详情

15路抢答器程序

发布时间:2020-06-19 发布时间:
|

Beep    BIT    P2.3 

LED1    EQU    08H 
LED2    EQU    09H 
LED3    EQU    0AH 

LED4    EQU    0BH 
LedT0    EQU    0CH    ;0-3 轮流点亮4个数据管 

    ORG 0000H  
    LJMP START    ;转入主程序 

    ORG    000BH     
;=================================================         
;定时器0中断入口 
INT_TO: 
    PUSH    ACC 
    PUSH    PSW 

    CLR    TF0        ;清定时0中断标志 
    MOV    TH0,#0F6H    ;2.5MS 
    MOV    TL0,#03DH    ; 

    MOV    A,#11110000B    ;关数码管 
    ORL    P2,A 

    MOV    A,LedT0 
    CJNE    A,#0,INT_T0_1 
    MOV    A,LED1 
    MOVC    A,@A+DPTR 
    MOV    P0,A 
    CLR    P2.7     
    MOV    LedT0,#1 
    LJMP    INT_T0_END 
 INT_T0_1: 
       
    MOV    A,LedT0 
    CJNE    A,#1,INT_T0_2 
    MOV    A,LED2 
    MOVC    A,@A+DPTR 
    MOV    P0,A 
    CLR    P2.6     
    MOV    LedT0,#2 
    LJMP    INT_T0_END 
 INT_T0_2: 
       
     MOV    A,LedT0 
    CJNE    A,#2,INT_T0_3 
    MOV    A,LED3 
    MOVC    A,@A+DPTR 
    MOV    P0,A 
    CLR    P2.5     
    MOV    LedT0,#3 
    LJMP    INT_T0_END 
 INT_T0_3: 
       
    MOV    A,LED4 
    MOVC    A,@A+DPTR 
    MOV    P0,A 
    CLR    P2.4     
    MOV    LedT0,#0 
    LJMP    INT_T0_END 
       
 INT_T0_END: 

    POP    PSW     
    POP    ACC 

RETI 

;============================================= 

START: 
    MOV    SP,#60H 
     

    MOV    TMOD,#01H    ;设定T0为十六位定时模式。 
    MOV    TH0,#0F6H    ;2.5MS 
    MOV    TL0,#03DH    ; 
    SETB    TR0        ;开定时器0 
    SETB    ET0        ;致能定时0中断 
    CLR    TF0        ;清定时0中断标志 
    SETB    EA        ;开总中断 

    MOV    LedT0,#00H 
    MOV    DPTR,#TABLE 

    MOV    LED1,#10H 
    MOV    LED2,#10H 
    MOV    LED3,#10H 
    MOV    LED4,#10H 
;============================================= 
SCAN:     
    ;按键扫描 
    JNB    P3.2,KEY_SW1 
    JNB    P3.3,KEY_SW2 
    JNB    P3.4,KEY_SW3 
    JNB    P3.5,KEY_SW4 
    LJMP    SCAN 
;============================================= 
KEY_SW1: 
    LCALL    DELAY_10MS    ;去抖动 
    JB    P3.2,SCAN 

    MOV    LED3,#0H 
    MOV    LED4,#01 
    CLR    P1.0        ;点亮LED 
    CLR    Beep 
    CALL    DELAY_100MS 
    SETB    Beep 
    CALL    DELAY_2S 
     
    MOV    LED3,#10H 
    MOV    LED4,#10H 
    SETB    P1.0 
    JMP    SCAN 
;============================================= 
KEY_SW2: 
    LCALL    DELAY_10MS    ;去抖动 
    JB    P3.3,SCAN 

    MOV    LED3,#0H 
    MOV    LED4,#02 
    CLR    P1.1        ;点亮LED 
    CLR    Beep 
    CALL    DELAY_100MS 
    SETB    Beep 
    CALL    DELAY_2S 
     
    MOV    LED3,#10H 
    MOV    LED4,#10H 
    SETB    P1.1 
    JMP    SCAN 
;============================================= 
KEY_SW3: 
    LCALL    DELAY_10MS    ;去抖动 
    JB    P3.4,SCAN 

    MOV    LED3,#0H 
    MOV    LED4,#03 
    CLR    P1.2        ;点亮LED 
    CLR    Beep 
    CALL    DELAY_100MS 
    SETB    Beep 
    CALL    DELAY_2S 
     
    MOV    LED3,#10H 
    MOV    LED4,#10H 
    SETB    P1.2 
    JMP    SCAN     
;============================================= 
KEY_SW4: 
    LCALL    DELAY_10MS    ;去抖动 
    JB    P3.5,SCAN 

    MOV    LED3,#0H 
    MOV    LED4,#04 
    CLR    P1.3    ;点亮LED 
    CLR    Beep 
    CALL    DELAY_100MS 
    SETB    Beep 
    CALL    DELAY_2S 
     
    MOV    LED3,#10H 
    MOV    LED4,#10H 
    SETB    P1.3 
    JMP    SCAN 

;============================================= 
DELAY_2S: 
    MOV    R3,#200 
    JMP    DELAY10MS 
DELAY_100MS: 
    MOV    R3,#10 
    JMP    DELAY10MS 
DELAY_10MS:  
    MOV    R3,#1 
;============================= 
DELAY10MS: 
    MOV    R4,#20 
DELAY10MSA: 
    MOV    R5,#247 
    DJNZ    R5,$ 
    DJNZ    R4,DELAY10MSA 
    DJNZ    R3,DELAY10MS 
RET 
;============================================= 
TABLE: 
    DB    00101000B    ;0 
    DB    11101011B    ;1 
    DB    00110010B    ;2 
    DB    10100010B    ;3 
    DB    11100001B    ;4 
    DB    10100100B    ;5 
    DB    00100100B    ;6 
    DB    11101010B    ;7 
    DB    00100000B    ;8 
    DB    10100000B    ;9 
    DB    01100000B    ;A 
    DB    00100101B    ;b 
    DB    00111100B    ;C 
    DB    00100011B    ;d 
    DB    00110100B    ;E 
    DB    01110100B    ;F 
    DB    11110111B    ;- 
    DB    11111111B    ; 
END


关键字:15路  抢答器 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
MSP430F5529 上手小例程2