⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shuzizhong.txt

📁 可以调节分和小时(只能加)
💻 TXT
字号:
ORG    0000H
sec    EQU   30H   ;秒各位
sect   EQU   31H   ;秒十位
min    EQU   32H   ;分个位
mint   EQU   33H   ;分十位
hour   EQU   34H   ;时各位
hourt  EQU   35H   ;时十位

LJMP   START       ;跳转

ORG       0100H
START:
CLR    sec         ;对各位赋零
CLR    sect
CLR    min    
CLR    mint
CLR    hour
CLR    hourt

stloop:                      //;开始计时
ACALL  DISP            //2;调用显示

INC    sec                  //1;秒个位加1
MOV    A,     sec        //1
CJNE   A,     #10,   stloop    //2;秒个位不为10,则继续计时
MOV    sec,   #00H              //1;秒个位为10,该位清零,并转到秒十位计时

INC    sect                           //1;秒十位加1
MOV    A,     sect                //1
CJNE   A,     #6,   stloop     //2;秒十位不为6,则继续计时    
mov    sect,  #00H              //1;秒十位为6,该位清零,并转到分个位计时

INC    min                            //1
MOV    A,     min                  //1 
CJNE   A,     #10,   stloop    //2;分个位不为10,则继续计时
mov    min,   #00H               //1;分个位为10,该位清零,并转到分十位计时

INC    mint                            //1
MOV    A,     mint                 //1
CJNE   A,     #6,   stloop      //2;分十位不为6,则继续计时
MOV    mint,  #00H              //1;分十位为6,该位清零,并转到时个位计时

/*下面是24进制的判断和时的计时*/
MOV    A,     hourt             //1
CJNE   A,     #2,   h            //2;判断时十位是否为2,不为2就继续计时
MOV    A,     hour               //1

/*此处比较特殊,由于是显示0~23,到22的时候就转到h: ,就变成23了,
然后转到stloop,延迟1秒,然后到下面这句,就清零了,即00~23计时*/                
CJNE   A,     #3,   h             //2;
MOV    hour,  #00H            //1,23显示1秒后,就清零了
MOV    hourt, #00H            //1
AJMP   stloop                     //2
h:
INC    hour                          //1    若分的十位满6,清零后时个位加1
MOV    A,     hour               //1
CJNE   A,     #10,   stloop   //2    若时个位部满10
MOV    hour,  #00H            //1

INC    hourt                         //1                  

AJMP stloop                        //2


/*下面是显示程序*/
DISP:                    
MOV    DPTR,  #TABLE     //2;TABLE的地址给DPTR指针

MOV    R2,    #6                 //1;R2、R3后面DJNZ循环会用到.
D2:
MOV    R3,    #150             //1
loop:
MOV    A,     sec                 //1
MOVC   A,     @A+DPTR    //2
MOV    P1,    A                    //1将秒个位数输出到p1口
SETB   P0.7                        //1开秒个位的显示
ACALL  DELAY                  //2延时
CLR    P0.7                        //1关个位的显示

MOV    A,     sect                //1秒十位
MOVC   A,     @A+DPTR    //2
MOV    P1,    A                    //1
SETB   P0.6                        //1
ACALL  DELAY                    //2
CLR    P0.6                          //1

MOV    P1,    #0FDH            //1显示分隔符号
SETB   P0.5                         //1
ACALL DELAY                     //2
CLR    P0.5                          //1   

MOV    A,     min                   //1分个位
MOVC   A,     @A+DPTR      //2
MOV    P1,    A                      //1
SETB   P0.4                         //1
ACALL  DELAY                    //2
CLR    P0.4                          //1

MOV    A,     mint                 //1分十位
MOVC   A,     @A+DPTR     //2
MOV    P1,    A                     //1
SETB   P0.3                         //1
ACALL  DELAY                    //2
CLR    P0.3                          //1

MOV    P1,    #0FDH            //1分隔符
SETB   P0.2                         //1
ACALL  DELAY                    //2
CLR    P0.2                          //1

MOV    A,     hour                 //1小时个位
MOVC   A,     @A+DPTR     //2
MOV    P1,    A                     //1
SETB   P0.1                         //1
ACALL  DELAY                    //2
CLR    P0.1                         //1

MOV    A,     hourt               //1小时十位
MOVC   A,     @A+DPTR     //2
MOV    P1,    A                    //1
SETB   P0.0                        //1
ACALL  DELAY                   //2
CLR    P0.0                         //1

/*这里,和DELAY一起构成延时1s,另外还要将非延时指令
的指令周期算在内,以确保软件上的最小误差*/
DJNZ   R3,    loop                //2不能DELAY太长时间,所以要各位循环显示,看上去才不闪烁
DJNZ   R2,    D2                  //2

RET

/*131个机器周期的DELAY*/
DELAY:
MOV    R0,    #10                 //1
D1:
MOV    R1,    #5                  //1
DJNZ   R1,    $                     //2
DJNZ   R0,    D1                  //2
RET
/*下面是共阳八位数码管的0至9的段的数字表示*/
TABLE: DB 03H,9FH,25H,0DH,99H,49H,41H,1FH,1H,09H

END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -