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

拨码开关显示试验程序

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

 

图2

    图1就是我们试验板上的拨码开关和四个指示灯,拨码开关拨向左边为高电平(为1),拨码开关拨向右边为低电平(为0),右边指示灯也点亮, 原理图见图2所示。


    这个实验实现的功能是: 根据拨码的编码方式进行显示,显示为8421BCD码,例如:将图1中拨码开关2和3拨向右边,则显示6(低电平有效);程序如下:

       ORG   1000H
       A_BIT EQU 20H
       B_BIT EQU 21H
       YI    EQU 22H
       ER    EQU 23H
       SI    EQU 24H
       BA    EQU 25H
       HUO1  EQU 26H
       HUO2  EQU 27H
       MOV   A_BIT,#0
       MOV   A_BIT,#0
       MOV   P0,#0FFH
       MOV   P1,#0FFH
       MOV   P2,#0FFH
       MOV   P3,#0FFH
START: LCALL DISP
       MOV   YI,#0
       MOV   ER,#0
       MOV   SI,#0
       MOV   BA,#0
       JB    P0.0,STAR1
       LCALL DELAY
       JB    P0.0,STAR1
       MOV   YI,#1
STAR1: JB    P0.1,STAR2
       LCALL DELAY
       JB    P0.1,STAR2
       MOV   ER,#2
STAR2: JB    P0.2,STAR3
       LCALL DELAY
       JB    P0.2,STAR3
       MOV   SI,#4
STAR3: JB    P0.3,STAR4
       LCALL DELAY
       JB    P0.3,STAR4
       MOV   BA,#8
STAR4: CLR   C
       MOV   A,YI
       ADD   A,ER
       ADD   A,SI 
       ADDC  A,BA
       MOV   A_BIT,A
       JNC   STAR5
       MOV   B_BIT,#1
STAR5: MOV   B_BIT,#0
       LJMP  START
DISP:  MOV   DPTR,#NUMTAB ;指定查表启始地址
       MOV   A,A_BIT;取个位数
       MOVC  A,@A+DPTR ;查个位数的7段代码
       MOV   P1,A ;送出个位的7段代码
       CLR   P2.0 ;开个位显示
       CALL  DELAY;显示1毫秒
       SETB  P2.0;关闭个位显示
       MOV   A,B_BIT ;取十位数
       MOVC  A,@A+DPTR
       MOV   P1,A
       CLR   P2.1
       ACALL DELAY
       SETB  P2.1
       RET
DELAY: NOP
       MOV   R4,#2 ;1毫秒延时子程序
D1:    MOV   R5,#248
       DJNZ  R5,$
       DJNZ  R4,D1
       RET
NUMTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
        DB 80H,90H,88H,83H,0C7H,0A0H,86H,8EH
       END





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

热门文章 更多