yjf00

    1. 用89C51的串口和74ls164连接,74ls164和两片74ls373连接,P1.0控制个位数的74ls373,P1.1控制十位数的74ls373,数码管共阳极连接,问题是显示子程序不能确定是否正确 ORG   0000H           ;主程序的入口地址    LJMP  MAIN            ;跳转到主程序的开始处 ORG   0003H           ;外部中断0的中断程序入口地址 LJMP  INT0 INT0: CLR  P1.0       CLR  P1.1       SETB P1.2       CLR  P1.3       SETB P1.4       CLR  P1.5       SETB P1.6       CLR  P1.7 TT:   JNB   P1.7 ,TT       RETI    ORG    1000H MAIN:MOV    R1,#00H       MOV    SCON,#00H      ;初始化串行口方式0       MOV    IE,#10000001B  ;允许外部中断0       SETB   IT0       MOV    20H,#55D       MOV    21H,#5D       MOV    22H,#25D ST1: CLR    P1.2      ;第一个状态,主干道亮绿灯、支干道亮红灯      SETB   P1.3      SETB   P1.4      CLR    P1.5      SETB   P1.6      CJNE   R1,#0FFH,TZ1     ;R1中的数和立即数0FFH不等则跳转到TZ1       MOV    R1,#00H       DEC    20H              ;20H中的数55减1      CJNE    R1,#0FFH,ST1 TZ1: MOV    R2,20H       LCALL DISP              ;调用显示子程序       MOV    A,20H       MOV   R1,#0FFH       CJNE   A,#00H,ST1       MOV    20H,#55D ST2: SETB     P1.2      SETB    P1.3      CLR    P1.4      SETB    P1.5      SETB    P1.6       CJNE   R1,#0FFH,TZ2       MOV    R1,#00H       DEC    21H       CJNE    R1,#0FFH,ST2 TZ2: MOV    R2,21H       LCALL DISP       MOV    A,21H       MOV   R1,#0FFH       CJNE   A,#00H,ST2       MOV    21H,#05D ST3: SETB     P1.2      CLR     P1.3      SETB     P1.4      SETB     P1.5      CLR    P1.6       CJNE   R1,#0FFH,TZ3       MOV    R1,#00H       DEC    22H      CJNE   R1,#0FFH,ST3 TZ3: MOV    R2,22H       LCALL DISP       MOV    A,22H       MOV   R1,#0FFH       CJNE   A,#00H,ST3       MOV    22H,#25D ST4: SETB   P1.2      SETB    P1.3      CLR    P1.4      SETB   P1.5      SETB    P1.6       CJNE   R1,#0FFH,TZ4       MOV    R1,#00H       DEC    21H       CJNE   R1,#0FFH,ST4 TZ4: MOV    R2,21H       LCALL DISP       MOV    A,21H       MOV   R1,#0FFH       CJNE   A,#00H,ST4       MOV    21H,#05D       LJMP   ST1 DISP: MOV    A,R2        ;显示子程序       MOV    B,#10D          DIV    AB            ;A中的数除以B中的数得整数放到A中,余数放到B中       MOV    60H,A       MOV    61H,B       MOV    R5,60H        ;将十位数放入R5中       MOV    R0,61H        ;B中的数即个位数放到R0中 LLP:  MOV    A,R0       MOV    DPTR,#TABLE       MOVC   A,@A+DPTR       SETB   P1.0          ;74ls373的LE端为高电平       MOV    SBUF,A        ;串口输出A的值,也就是查表所得值,这里输出个位上的数 OUT1:JNB TI,OUT1       CLR TI       CLR    P1.0          ;373LE端为低电平锁存              MOV    A,R5          ;       MOV    DPTR,#TABLE       MOVC   A,@A+DPTR       SETB   P1.1          ;P1.1控制令一片74ls373的LE端       MOV    SBUF,A        ;输出十位数 OUT2:JNB TI,OUT2          ;等待发送完毕       CLR TI               ;请发送标志,准备发送下一位       CLR    P1.1       LCALL DELAY1         ;调用延时一秒子程序       RET DELAY1:       MOV    R4,#10H DL1: LCALL   DL2      DJNZ    R4,DL1      RET DL2:  MOV     R7,#0FFH       MOV    R6,#0FFH DL3:DJNZ   R6,DL3       DJNZ   R7,DL3       RET TABLE:DB     0C0H,0FCH,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H       END

最近访客

< 1/1 >

统计信息

已有27人来访过

  • 芯积分:--
  • 好友:--
  • 主题:--
  • 回复:1

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言