返回该小组首页 回复主题
tangle

tangle

小组等级:     E币:978  (E币换礼)

#1楼主:数码管显示程序

文章发表于:2008-03-16 12:15

BUFF_LED1 EQU 20H    ;数码管显示缓存
        BUFF_LED2 EQU 21H
        BUFF_LED3 EQU 22H
        BUFF_LED4 EQU 23H
        BUFF_LED5 EQU 24H
        BUFF_LED6 EQU 25H
        BUFF_LED7 EQU 26H
        BUFF_LED8 EQU 27H
        BUFF_LED9 EQU 28H
        BUFF_LED10 EQU 29H
        BUFF_LED11 EQU 2AH
        BUFF_LED_LP  EQU 2BH      ;T0键盘显示扫描缓存
        D1 EQU  30H
    D2 EQU  31H
    D3 EQU  32H   
    D4 EQU  33H
    D5 EQU  34H
    D6 EQU  35H
    D7 EQU  36H
    D8 EQU  37H
    D9 EQU  38H
    D10 EQU 39H
    D11 EQU 3AH

        LED_PORT  EQU  P0
        DIG_PORT  EQU  P2
        DIG_PORT1  EQU  P1
        org  000h
        JMP  main
        ORG  00BH
        JMP  T0_INT
        org  0023h
        ljmp  rx_int
        ORG  100H
  main:MOV  SP ,#60H
        MOV  R0,#7FH
CLR_RAM:MOV  A,#00H
        MOV  @R0,A
        DJNZ  R0,CLR_RAM
        mov  sp,#60h
        MOV  IE,#00H
        mov  tmod,#21h
        mov  scon,#50h
        MOV  IP,#10H
    mov  pcon,#00h
        mov  TH1,#0FDH    ;sn=9600b/s-n-1
        MOV  TL1,#0FDH
    MOV      TL0,#LOW(65536-1000)  ;定时器0以1ms中断一次,用于动态扫描
        MOV      TH0,#HIGH(65536-1000)
        ;MOV  TH0,#244    ;T0=3MS
        ;MOV  TL0,#72
        SETB  TR1
        SETB  ES
        SETB  TR0
        SETB  ET0
        SETB  EA
        MOV    P1,#0FFH      ;INIT
        MOV    P2,#0FFH
        ;MOV    P0,#0FFH
        MOV    P3,#0FFH
DISP:  MOV BUFF_LED1,D1   
        MOV BUFF_LED2,D2
    ANL BUFF_LED2,#0FH
        MOV BUFF_LED3,D3
    ANL BUFF_LED3,#0FH
    MOV BUFF_LED4,D4
    ANL BUFF_LED4,#0FH
        MOV BUFF_LED5,D5
    ANL BUFF_LED5,#0FH
        MOV BUFF_LED6,D6
    ANL BUFF_LED6,#0FH
    MOV BUFF_LED7,D7
    ANL BUFF_LED7,#0FH
        MOV BUFF_LED8,D8
        ANL BUFF_LED8,#0FH
        MOV BUFF_LED9,D9
    ANL BUFF_LED9,#0FH
        MOV BUFF_LED10,D10
        ANL BUFF_LED10,#0FH
    MOV BUFF_LED11,D11
        ANL BUFF_LED11,#0FH
          JMP DISP
;----------- SERIAL COMMUNICATION INTRRUPT 串行接收中断--------------------
RX_INT: PUSH  ACC
        PUSH  PSW
        JB  RI,RECIEVE
    AJMP END_RX
        ;CLR  RI
        ;MOV  A,SBUF              ;读接收字节
        ;CLR  C
        ;SUBB  A,#30H              ;转换文本ASCii为数字
        ;MOV  BUFF_LED1,BUFF_LED2  ;循环移动显示
        ;MOV  BUFF_LED2,BUFF_LED3
        ;MOV  BUFF_LED3,BUFF_LED4
        ;MOV  BUFF_LED4,BUFF_LED5
        ;MOV  BUFF_LED5,BUFF_LED6
        ;MOV  BUFF_LED6,A
    ;CLR EA
        ;PUSH ACC
RECIEVE: CLR RI
        MOV A,#00
        MOV  A,SBUF  ;将接收的数据送显示
        LCALL  SHIFT
        MOV    D11,A

END_RX: POP  PSW
        POP  ACC
        RETI

;-------------  T0 INTRRUPT 数码管扫描定时中断---------------------------
T0_INT:  PUSH  ACC
        PUSH  PSW
    MOV    TL0,#LOW(65536-1000)  ;定时器0以1ms中断一次,用于动态扫描
        MOV    TH0,#HIGH(65536-1000)
        ;MOV    TH0,#244    ;T0=3MS
        ;MOV    TL0,#72
        INC    BUFF_LED_LP
        MOV    A,BUFF_LED_LP
        CJNE  A,#0cH,CONT_SCAN
        MOV    BUFF_LED_LP,#01H

   
CONT_SCAN: MOV  A,BUFF_LED_LP
          DEC  A
          RL    A
          MOV  DPTR,#TAB_SCAN
          JMP  @A+DPTR
TAB_SCAN: AJMP  SCAN_L1
          AJMP  SCAN_L2
          AJMP  SCAN_L3
          AJMP  SCAN_L4
          AJMP  SCAN_L5
          AJMP  SCAN_L6   
          AJMP  SCAN_L7
          AJMP  SCAN_L8
          AJMP  SCAN_L9
          AJMP  SCAN_L10
          AJMP  SCAN_L11

SCAN_L1:  MOV  DIG_PORT,#01111111B
          MOV  A,BUFF_LED1
      CJNE A,#4DH,END_SCAN1
          JMP  END_SCAN2
SCAN_L2:  MOV  DIG_PORT,#10111111B
          MOV  A,BUFF_LED2
          JMP  END_SCAN
SCAN_L3:  MOV  DIG_PORT,#11011111B
          MOV  A,BUFF_LED3
          JMP  END_SCAN
SCAN_L4:  MOV  DIG_PORT,#11101111B
          MOV  A,BUFF_LED4
          JMP  END_SCAN
SCAN_L5:  MOV  DIG_PORT,#11110111B
          MOV  A,BUFF_LED5
          JMP  END_SCAN
SCAN_L6:  MOV  DIG_PORT,#11111011B
          MOV  A,BUFF_LED6
      JMP  END_SCAN

SCAN_L7:  MOV  DIG_PORT1,#11111110B
          MOV  A,BUFF_LED7
      JMP  END_SCAN
SCAN_L8:  MOV  DIG_PORT1,#11111101B
          MOV  A,BUFF_LED8
      JMP  END_SCAN
SCAN_L9:  MOV  DIG_PORT1,#11111011B
          MOV  A,BUFF_LED9
      JMP  END_SCAN
SCAN_L10:  MOV  DIG_PORT1,#11110111B
          MOV  A,BUFF_LED10
      JMP  END_SCAN
SCAN_L11:  MOV  DIG_PORT1,#11101111B
          MOV  A,BUFF_LED11
      JMP  END_SCAN
END_SCAN1: MOV  A,#0C0H
          MOV  LED_PORT,A
          POP  PSW
          POP  ACC
          RETI
END_SCAN2:  MOV  A,#0BFH
          MOV  LED_PORT,A
          POP  PSW
          POP  ACC
          RETI

END_SCAN: MOV  DPTR,#TAB_LED
          MOVC  A,@A+DPTR
          MOV  LED_PORT,A
          POP  PSW
          POP  ACC
          RETI
SHIFT:
    MOV      D1,D2
    MOV      D2,D3
    MOV      D3,D4
    MOV      D4,D5
    MOV      D5,D6
    MOV      D6,D7
    MOV      D7,D8
    MOV      D8,D9
    MOV      D9,D10
    MOV      D10,D11
    RET


TAB_LED:DB 0C0H,0F9H,0A4H,0B0H,99H,92H  ;数码管显示字型表
    DB 82H,0F8H,80H,90H,88H,83H,0A7H
    DB 0A1H,86H,8EH,0FFH

        END

      【回复】

快速回复主题--如果想加入编辑器功能,建议使用 [高级回复]

您目前还不是小组成员,请先加入

回复贴子区

用户名:    您没有注册?

密码:    忘记了密码?

内容:

  • DesignDesign
  • HTMLHTML

浏览该小组的用户还看过...

设计资源与分销