微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 8155数字钟设计

8155数字钟设计

时间:10-02 整理:3721RD 点击:

已知PORT地址为8000H

PORTA为8001H

PORTB为8002H

PORTC为8003H

DISP0地址为30H 初始化值为00H

AHOUR,MIN,SEC,MESC的地址为3CH~3FH,初始化值为00H



       ORG 0000H
        AJMP MAIN
        ORG 000BH
        AJMP CLOCK
        ORG  0030H
MAIN:   MOV   SP,#50H ;设置堆栈区
            MOV   DPTR,#PORT ; 8155初始化
             MOV   A,#03H
             MOVX  @DPTR,A
             CLR    F1 ;清0闹钟标志位
             CLR    F0 ;允许计时显示
             MOV   AHOUR,#0FFH ;闹钟值寄存区初值
             MOV   AMIN,#0FFH
             MOV   ASEC,#0FFH
             MOV   R7,#10H ;显示缓冲区、计时缓冲区清0
             MOV   R0,#DISP0
             CLR  A
LOOP:   MOV  @R0, A
            INC   R0
           DJNZ  R7,LOOP
         MOV  TMOD,#01H ;定时器T0初始化
         MOV  TL0, #0B0H
         MOV  TH0, #3CH
         SETB  TR0 ; 启动定时器0
         SETB  EA ; 开中断
         SETB  ET0
BEGIN:  ACALL  ALARM ;调用定时器比较
            ACALL  KEYSCAN ;调用键盘扫描
            CJNE  A,#0AH,NEXT1;是C/R键否?
            CLR  TR0 ;暂停计时
            MOV  R1, #HOUR ;地址指针指向计时缓冲区首地址
            AJMP MOD
NEXT1:  CJNE   A,#0BH ,BEGIN;是ALM键否?
             JB      F1,NEXT2      ;闹钟正在闹响否?
            MOV    R1,#AHOUR   ;地址指针指向闹钟值寄存区首地址
MOD:    SETB   F0             ;禁止显示计时时间
            ACALL  MODIFY        ;调用时间设置/闹钟定时程序
            SETB   TR0 ; 重新开始计时
            CLR     F0 ; 恢复显示计时时间
            AJMP   BEGIN
NEXT2:  SETB   P1.0 ;闹钟正在闹响,停闹
             CLR    F1  ;清0闹钟标志
             AJMP  BEGIN
不知道8155的初始化、设置堆栈区、标志位、缓冲区用C语言怎么编
/*键盘设置子程序*/
KEYIN:  PUSH   PSW         ;保护现场
             PUSH   ACC
             SETB   RS1
             MOV    R0,#DISP0  ;R0指向显示缓冲区首地址
             MOV    R7,#60H    ;设置键盘输入次数
保护现场用C语言怎么写?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top