电子时钟的制作汇编语言,包括温度计

作者&投稿:仲孙旺 (若有异议请与网页底部的电邮联系)
电子时钟程序用汇编语言编写~

电子时钟?说的不明白,我自己编写的数码管现实的电子钟给你了
SDA BIT P3.6
SCL BIT P1.5
org 0000H
AJMP STAR
ORG 000BH
LJMP INT
STAR:

MOV PSW,#00H
MOV TH0,#3cH
MOV TL0,#0b0H
MOV TMOD,#01H
MOV R3,#14H
SETB ET0
SETB EA
setb p3.6
setb p1.5
MOV R0,#79H
MOV R1,#00H

READ:
LCALL READ_BYTE
MOV @R0,A
INC R0
INC R1
CJNE R0,#08H,READ
SETB TR0

;MOV 79H,#00H
;MOV 7AH,#00H
;MOV 7BH,#0AH
;MOV 7CH,#00H
;MOV 7DH,#0AH
;MOV 7EH,#00H

MAIN:
MOV DPTR,#TAB
MOV R0,#07H
MOV R1,#79H
JNB P3.2,JS

GO:
MOV A,@R1
MOVC A,@A+DPTR
MOV P0,A
MOV P2,R0
LCALL DELY
CJNE R0,#02H,GO1
AJMP MAIN
GO1:
DEC R0
INC R1
AJMP GO
INT:
PUSH ACC
DJNZ R3,NEXT
MOV R3,#14H
;MOV R3,#02H
INC 79H
MOV R4,79H
CJNE R4,#0AH,NEXT
MOV 79H,#00H
INC 7AH
MOV R4,7AH
CJNE R4,#06H,NEXT
MOV 7AH,#00H
INC 7BH
MOV R4,7BH
CJNE R4,#14H,NEXT
MOV 7BH,#0AH
INC 7CH
MOV R4,7CH
CJNE R4,#06H,NEXT
MOV 7CH,#00H
INC 7DH
MOV R4,7EH
CJNE R4,#02H,TWO
MOV R4,7DH
CJNE R4,#0eH,NEXT
mov 7dh,#0ah
AJMP ONE
TWO:
MOV R4,7DH
CJNE R4,#14H,NEXT
mov 7dh,#0ah
ONE:
INC 7EH
MOV R4,7EH
CJNE R4,#03H,NEXT
MOV 7EH,#00H
NEXT:
MOV TH0,#3CH
MOV TL0,#0B0H
;MOV TH0,#0feH ;检测
;MOV TL0,#0fbH
POP ACC
RETI

js:;按键检测
lcall del
jb P3.2,main
JNB P3.2,$
clr ea



CSH:
MOV R0,#7EH
MOV R1,#02H
STA:
MOV DPTR,#TAB

MOV A,@R0
MOVC A,@A+DPTR
MOV P0,A
MOV P2,R1
JNB P3.2,CLK1
JNB P3.3,CLK2
JNB P3.4,CLK3
AJMP STA
CLK3:
LCALL DEL
JB P3.4,STA
JNB P3.4,$
SETB EA




mov R0,#79h
MOV R1,#00H
WRITE:
lcall del
LCALL WRITE_BYTE
INC R0
INC R1
CJNE R1,#06H,WRITE



AJMP MAIN
CLK1:
LCALL DEL
JB P3.2,STA
JNB P3.2,$
DEC R0
INC R1
CJNE R1,#06H,STA
AJMP CSH
CLK2:
LCALL DEL
JB P3.3,STA
JNB P3.3,$

CJNE R1,#02H,THR
mov r3,7dh
cjne r3,#0eh,TMD2
tmd2:
jnc tmd


CJNE @R0,#02H,BUS1
MOV 7EH,#00H
AJMP STA
tmd:
cjne @r0,#01h,bus1
mov 7eh,#00h
ajmp sta
BUS1:
INC 7EH
AJMP STA

THR:
CJNE R1,#03H,FOR
MOV R3,7eH
CJNE R3,#02H,BUS2
CJNE @R0,#0dH,BUS3
MOV 7DH,#0AH
AJMP STA
BUS3:
INC 7DH
AJMP STA
BUS2:
CJNE @R0,#13H,BUS3
MOV 7DH,#0AH
AJMP STA
FOR:
CJNE R1,#04H,FIV
CJNE @R0,#05H,BUS6
MOV 7CH,#00H
AJMP STA
BUS6:
INC 7CH
AJMP STA
FIV:
CJNE @R0,#13H,BUS7
MOV 7BH,#0AH
AJMP STA
BUS7:
INC 7BH
LJMP STA

WRITE_BYTE:
CALL START
MOV A,#0A0H
CALL SENDBYTE;选通地址写入
CALL WAITACK
MOV A,r1;入24c02的地址
CALL SENDBYTE;将24c02的地址写入
CALL WAITACK
MOV A,@R0;可以传数据了
CALL SENDBYTE
CALL WAITACK
CALL STOP
RET

READ_BYTE:
CALL START;{
MOV A,#0A0H; 先写写入选通地址,再写读入地址,再写读入选通地址,再读?这样操作的么?

CALL SENDBYTE;
CALL WAITACK; 我认为应该先写读入选通地址,再写读入地址,直接读?不行么?
MOV A,R1;
CALL SENDBYTE; 没资料了···再找找吧!
CALL WAITACK; }
CALL START; C语言也是这个意思,看样这人写的不错
MOV A,#0A1H;
CALL SENDBYTE
CALL WAITACK
CALL RCVBYTE
CALL STOP
RET
;-----------------------------------------------------
;从IIC总线上接收一个字节数据
;出口参数:A---接收数据存放在A中
;-----------------------------------------------------
RCVBYTE:
MOV R7,#08;一个字节共接收8位数据
CLR A
SETB SDA;释放SDA数据线
R_BYTE:
CLR SCL
NOP
NOP
NOP
NOP
SETB SCL ;启动一个时钟周期,读总线
NOP
NOP
NOP
NOP
MOV C,SDA;将SDA状态读入C
RLC A;结果移入A
SETB SDA;释放SDA数据线
DJNZ R7,R_BYTE;判断8位数据是否接收完全?
RET
;----------------------------------------------------
;向IIC总线发送一个字节数据
;入口参数:A---待发送数据存放在A中
;----------------------------------------------------
SENDBYTE:
MOV R7,#08
S_BYTE:
RLC A
MOV SDA,C
SETB SCL
NOP
NOP
NOP
NOP
CLR SCL
DJNZ R7,S_BYTE ;8位发送完毕?
RET
;-----------------------------------------------------
;等待应答信号
;等待从机返回一个响应信号
;-----------------------------------------------------
WAITACK:
CLR SCL
nop
nop
nop
SETB SDA ;释放SDA信号线
NOP
NOP
nop
SETB SCL
NOP
NOP
NOP
MOV C,SDA
JC WAITACK ;SDA为低电平,返回了响应信号
CLR SDA
CLR SCL
RET
;----------------------------------------------------
;启动信号子程序
;----------------------------------------------------
START:
SETB SDA
SETB SCL
NOP
nop
nop
CLR SDA
NOP
NOP
NOP
NOP
CLR SCL
RET
;----------------------------------------------------
;停止信号子程序
;----------------------------------------------------
STOP:
CLR SDA
NOP
nop
nop
SETB SCL
NOP
NOP
NOP
NOP
SETB SDA
NOP
NOP
CLR SCL;
CLR SDA;
RET



DEL:
MOV R6,#0ffH
DL1:MOV R7,#022H
DL2:DJNZ R7,DL2
DJNZ R6,DL1
RET
DELY:
MOV R6,#4
D1:MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
TAB:
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,0BfH,86H,0DBH,0CFH,0E6H,0EDH,0fdh,87H,0FFH,0EFH
END
其中包含IIC的部分可以不看,我是用来测试24C02的
接法:P0口段码,P1口接了三八译码器,p3的几个口是调时间用的

;name: ELECTRONIC CLOCK
data segment
mess1 db ' ****************ASM ASSIGNMENT**************** ',0ah,0dh
db ' ',0ah,0dh
db ' ***************ELECTRONIC CLOCK*************** ',0ah,0dh
db ' ',0ah,0dh
db ' ',0ah,0dh
db ' *******Press C or c to correct the time******* ',0ah,0dh
db ' ',0ah,0dh
db ' ***********Press ESC button to exit*********** ',0ah,0dh,'$'
tn db 'Please input the new time (hh:mm:ss):',0dh,0ah,'$'
mess2 db '*******Time is:',0ah,0dh,'$'
t_buff db 40 ;在数据段开一段时间显示缓冲区
db ?
db 40 dup (?)
hor db ?
min db ?
sec db ?
fg db 0
data ends

stack segment
db 100 dup(?)
stack ends

code segment
assume cs:code,ss:stack,ds:data ;确定各个逻辑段的类型
start:
call clear ;调用清屏子程序

display: ;时间显示部分
mov ax,data
mov ds,ax
mov bx,offset t_buff ;送t_buff的偏移地址到BX
mov ah,2ch ;调用DOS时间调用功能,功能号:2cH,小时,分钟,秒数分别保存在CH,CL,DH中
int 21h
mov al,ch ;小时数设定
mov ah,0
call bctd ;调用进制转换子程序
push ax
and al,0f0h ;选取al高四位
mov cl,4 ;设置右循环的次数
rol al,cl ;右循环
or al,30h ;加30h得到ACSII码
mov [bx],al ;将得到的结果送到t_buff缓冲区
inc bx ;BX自加1,指针指向下一个缓冲区的下一个地址


pop ax
and al,0fh ;选取低四位
or al,30h
mov [bx],al ;将转换后的低四位值送入缓冲区的第二个地址
inc bx
;----------------------------------------------------------
mov al,':' ;显示分隔符号
mov [bx],al
inc bx
;-------------------------------------------------------
mov ah,2ch
int 21h

mov al,cl ;分钟数设定
mov ah,0
call bctd
push ax
and al,0f0h
mov cl,4
rol al,cl
or al,30h

mov [bx],al
inc bx
pop ax
and al,0fh
or al,30h
mov [bx],al
inc bx
;-------------------------------------------------------------------------
mov al,':' ;显示分隔符号
mov [bx],al
inc bx
;-------------------------------------------------------------------------

mov ah,2ch ;秒设定
int 21h
mov al,dh
mov ah,0
call bctd
push ax
and al,0f0h
mov cl,4
rol al,cl
or al,30h

mov [bx],al
inc bx
pop ax
and al,0fh
or al,30h
mov [bx],al
inc bx
;----------------------------------------------------------------------
mov al,'$' ;将字符串的结束位送至显示缓冲区的最后一位
mov [bx],al
;------------------------------------------------------------------------
push bx ;置光标位置 ,AH=2,BH=0,DH跟DL分别为行号与列号,并入栈保护BX
mov ah,2
mov bh,0
mov dh,17
mov dl,41
int 10h
pop bx
lea dx,t_buff ;送t_buff偏移地址到DX,并调用DOS显示功能,功能号为9
mov ah,9
int 21h

push bx ;置光标位置
mov ah,2
mov bh,0
mov dh,0
mov dl,0
int 10h
pop bx
lea dx,mess1
mov ah,9
int 21h

push bx ;置光标位置
mov ah,2
mov bh,0
mov dh,17
mov dl,21
int 10h
pop bx

lea dx,mess2
mov ah,9
int 21h

;-----------------------------
call delay1
mov ah,1 ;调用键盘I/O中断功能号1,获取键值到AL
int 16h
cmp al,'c' ;是c键,转到时间修改程序
je Cor
cmp al,'C' ;是C键,转到时间修改程序
je Cor
cmp al,1bh
jz quit ;是ESC键,退出程序
jmp display

quit:
mov ah,4ch ;程序终止功能号
int 21h
ret

Cor: call correct ;调用时间修改子程序
;-------------------------------
bctd proc near ;二进制转BCD码子程序
;AX输入参数
;AX输出参数,存放调整过的BCD码
mov dx,ax
mov ax,0
mov cx,16 ;设循环次数
bctd1:
clc ;清进位标志C
rcl dx,1 ;通过进位的循环右移
adc al,al ;带进位加法
daa ;加法的十进制调整
xchg al,ah ;交换高、低八位
adc al,al
daa
xchg al,ah
loop bctd1 ;循环次数保存在CX里
ret
bctd endp
;-------------------------------------------
clear proc near
push ax ;入栈保护现场
push bx
push cx
push dx
mov ax,0600h ;ah=06(滚动)al=00(全屏空白)
mov bh,3eh ;设置背景颜色(2)和前景颜色(e)
sub cx,cx
mov dx,5f5fh
int 10h
pop dx ;出栈恢复现场
pop cx
pop bx
pop ax
ret
clear endp



;-----------------------------------------
delay1 PROC ;精确延迟时间子程序

MOV DX,04ffh ;循环次数
up: XOR CX,CX
a: NOP
LOOP a
DEC DX
JNZ up
RET
delay1 ENDP
;----------------------------
correct proc ;时间修改子程序
call input ;调用键盘输入子程序输入数据
mov ch,hor
mov cl,min
mov dh,sec
and dl,0h
mov ah,2dh
int 21h
jmp start
ret
correct endp
;----------------------------------
input proc ;键盘输入子程序
push ax ;入栈保护数据
push bx
push cx
push dx
pushf

mov dx,offset tn ;显示修改时间的格式提示
mov ah,09h
int 21h

mov dx,offset t_buff ;数据缓冲区的数据输入
mov ah,0ah
int 21h
and dx,0h
lea bx,t_buff
inc bx
inc bx
mov dh,[bx]
sub dh,30h
inc bx
mov dl,[bx]
sub dl,30h
mov cl,10
mov al,dh
mul cl
add al,dl
mov ch,al
mov hor,al
inc bx
inc bx
mov dh,[bx]
sub dh,30h
inc bx
mov dl,[bx]
sub dl,30h
mov cl,10
mov al,dh
mul cl
add al,dl
mov cl,al
mov min,al
inc bx
inc bx
mov dh,[bx]
sub dh,30h
inc bx
mov dl,[bx]
sub dl,30h
mov cl,10
mov al,dh
mul cl
add al,dl
mov dh,al
mov sec,al
popf ;出栈恢复数据
pop dx
pop cx
pop bx
pop ax
ret
input endp
;----------------------------
code ends
end start

产品名称:电子时钟
数据段

mess1数据库'**************** ASM的转让************** **',0AH,0DH

DB',0AH,0DH

DB'***************电子钟********* ******',0AH,0DH

DB',0AH,0DH

DB',0AH,0DH

DB'*******按C或C时间*******“,0AH,0DH

数据库”,0AH,0DH

DB'***********按ESC键退出* **********',0AH,0DH,'$'

TN DB'请输入新的时间(HH:MM:SS)',0DH,0AH,'$' /> mess2 DB'*******时间是:“0DH 0AH,'$' t_buff DB 40,开放了一段时间的数据段显示缓冲区

DB?

DB 40 DUP(?)

贺分贝?

分钟分贝?

秒分贝?

FG DB 0

数据结束

堆栈段

DB 100 DUP(?),

堆栈结束

代码段 BR />假设CS:代码堆栈,DS,SS:数据确定逻辑段的类型

启动:

通话清晰,通话清晰屏幕子程序

显示时间部分

MOV AX,数据

MOV DS,AX

MOV BX,偏移t_buff的偏移地址发送t_buff BX

MOV AH,2路,调用DOS时间通话功能,功能数:2路,小时,分钟,秒保存在CH,CL,DH在

INT 21H

MOV AL,CH;的时间设置

MOV AH,0

调用bctd的;的

PUSH AX调用十六进制转换子程序

的人,0F0H;所选的人高4

MOV CL,4周期数设置正确
> ROL AL,CL;权流转

或人ACSII码加30H,30H;

MOV [BX],AL;

INC BX的结果,将发送t_buff缓冲; BX自加1,指针指向下一个缓冲区地址

或Al选择低四位POP AX

人,0FH,30H

MOV [BX],AL低四位转换值到缓冲区中的第二个地址

INC BX

; ------------------------- ---------------------------------

MOV AL,':';显示分隔符 MOV [BX],AL

INC BX

; -------------------------------- -----------------------

MOV AH,2路

INT 21H

MOV AL,CL;

MOV AH,0 调用bctd

PUSH AX

人,0F0H

4

ROL人,MOV CL,CL 或人,30H

MOV [BX],AL

INC BX

POP AX

人,0FH

人,30H /> MOV [BX],AL

INC BX

; ------------------------------- ------------------------------------------

MOV AL,' :“显示

MOV分隔符[BX],AL

INC BX

; ------------------------ ------------------------------------------------- BR p> MOV AH,2声道秒设置

INT 21H

卫生署

MOV AH,0 MOV AL,

的的呼叫bctd

PUSH AX BR />,和人0F0H

MOV CL,4

ROL AL,CL

人,30H

MOV [BX],AL

公司BX

POP AX

人,0FH

人,30H

MOV [BX],AL

INC BX

; ------ -------------------------------------------------- -------------

MOV AL,'$'结束的位串的显示缓冲区的最后一个

MOV [BX],AL。

; --------------------------------------------- ---------------------------

推BX;设置光标位置,AH = 2,BH = 0,DH与DL行号,列号和堆栈保护BX

MOV AH,2

MOV BH,0

MOV DH,17

MOV DL,41

INT 10H BR /> POP BX

LEA DX,t_buff;发送t_buff的偏移地址DX调用DOS功能,的功能9号

MOV AH,9 INT 21H

推BX;设置光标位置 MOV AH,2

MOV BH,0

MOV DH,0

MOV DL,0

INT 10H /> POP BX

LEA DX,mess1

MOV AH,9

INT 21H

推BX;

MOV设置的光标位置啊,

MOV BH,0

MOV DH,17

MOV DL,21

INT 10H

弹出BX

LEA DX,mess2 BR /> MOV AH,9

INT 21H

; ---------------------------- -

呼叫时延1

MOV AH,1,调用键盘I / O中断功能的数字1,拿到钥匙的AL

INT 16H

CMP AL,'C';键后,进入程序

JE哥林多前书 CMP AL,'C',C键,进入程序

JE肺心病

CMP AL 1BH

JZ退出ESC键退出程序

JMP显示

退出:

MOV AH,4CH;程序终止功能

INT 21H

RET p>哥林多前书:调用正确的;通话时间子程序

; ------------------------------ -

bctd进程附近,二进制转BCD完全不同的程序

; AX输入参数

; AX输出参数的存储调整后的BCD码

MOV DX,AX

MOV AX,的

CX字节的mov cx,16;设定的周期

bctd1:

CLC;清除进位标志

1 RCL DX,通过进位的旋转右

ADC AL,AL;进

DAA;十进制调整

的XCHG人,啊,交换的高和低八位

ADC人,人

DAA BR />的XCHG人啊

循环bctd1存储在CX周期内的数

RET的

bctd ENDP

; ---------- ---------------------------------

明确

PUSH AX附近触发堆栈保护领域

推BX

推CX

推DX

MOV AX,0600H;啊= 06(滚动)] = 00(全屏空白)

MOV BH 3EH ;子(2)的背景颜色和前景颜色设置(E)

CX,CX

MOV DX,5f5fh

INT 10H

流行的DX;栈,斧头 />恢复现场

弹出CX

弹出BX

RET

明确ENDP

; ------------- ----------------------------

延迟1 PROC精确的延时子程序

MOV DX, ;周期

:XOR CX,CX

:NOP

LOOP一个

DEC DX

JNZ起来

RET

延迟1 ENDP 04ffh数

; ----------------------------

正确的过程,时间的子程序

调用输入调用键盘输入子程序的输入数据

MOV CH贺

MOV CL,最小

MOV DH,秒

和dl,0H

MOV AH,2DH ?

INT 21H

JMP START

RET

正确ENDP

; -------------------- --------------

输入PROC;键盘输入子程序

PUSH AX;堆栈保护数据

推BX

推CX />推DX

PUSHF

MOV DX,偏移TN显示的时间格式提示

MOV AH,09H

INT 21H a>

MOV DX,的偏移t_buff;数据缓冲区的数据输入

MOV AH,0AH

INT 21H

和DX,0H

LEA BX,t_buff /> INC BX

INC BX

MOV DH,[BX]

子DH,30H INC BX

MOV DL,[BX]

子升,30H

MOV AL,MOV CL,DH

MUL CL

ADD人,DL

MOV CH,人

MOV贺,人...... /> INC BX

INC BX

MOV DH,[BX]

子DH,30H INC BX

MOV DL,[BX]

子升,30H

MOV AL,MOV CL,DH

MUL CL

ADD人,DL

MOV CL,AL

MOV分钟,人...... /> INC BX

INC BX

MOV DH,[BX]

子DH,30H INC BX

MOV DL,[BX]

子升,30H

MOV AL,MOV CL,卫生署

MUL CL

ADD人,DL

MOV DH,人

MOV秒,AL POPF出的栈恢复数据

流行的DX

弹出CX

弹出BX

POP AX

RET

输入ENDP

; ----------------------------

代码
年底开始结束

电子时钟程序已经符合你的要求。我希望能对你有用。
程序:时间格式
:12-00-00,无论是时 - 分 - 秒
重点说明:P3.2过调整。 P3.3子调节。 P3.4秒调整。三个按键,每按一次加一。
水晶说明:12MHZ
数码管说明:共阳极数码管。 8个数码管。分享两个共阳极数码管。
其中,P0口的数码管的段选择器,P2口为数码管的选择。
此程序已被证明! ! !
汇编源代码如下:
第二EQU 30H
MINITE EQU 31H
HOUR EQU 32H
HOURK BIT P3.2
MINITEK BIT P3.3 /> SECONDK BIT P3.4
DISPBUF EQU 40H
DISPBIT EQU 48H
T2SCNTA EQU 49H
T2SCNTB EQU 4AH
TEMP EQU 4BH
ORG 00H
LJMP START
ORG 0B??H
LJMP INT_T0
START:MOV第二,#00H
MOV MINITE,#00H
MOV小时,第12
MOV DISPBIT,#00H
MOV T2SCNTA
,#00H MOV T2SCNTB
MOV TEMP,#0FEH
LCALL DISP
MOV TMOD,#00H,#01H
MOV TH0,#(65536-2000)/ 256
MOV TL0,#(65536-2000)MOD 256
SETB TR0
SETB ET0
SETB EA
WT: JB SECONDK,NK1
LCALL DELY10MS
JB SECONDK,NK1
INC第二
MOV A,第二
CJNE A,#60,NS60
MOV第二, #00H
NS60:LCALL DISP JNB SECONDK,
NK1,NK2
LCALL DELY10MS
JB MINITEK:JB MINITEK,NK2
INC MINITE /> MOV A,MINITE
CJNE A,#60,NM60
MOV MINITE,#00H
NM60:LCALL DISP JNB MINITEK,
NK2:JB HOURK ,NK3
LCALL DELY10MS
JB HOURK,NK3
INC小时
CJNE A,#24,NH24
MOV小时,小时
MOV A,#00H
NH24:LCALL DISP
JNB HOURK,
NK3:LJMP WT
DELY10MS:MOV R6,#10
D1:MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
DISP:MOV A,#DISPBUF
ADD A,#8
DEC A
MOV R1,一个
MOV A,HOUR
MOV B,#10
DIV AB
MOV @ R1,一个
DEC R1
MOV A,B
> MOV @ R1,一个
DEC R1
MOV A,#10
MOV @ R1,一个
DEC R1
MOV A,MINITE
MOV乙#,10#
DIV AB
MOV @ R1,一个
DEC R1
MOV A,B
MOV @ R1,A
DEC R1 / > MOV A,#10
MOV @ R1,一个
DEC R1
MOV A,第二
MOV B,#10
DIV AB
MOV @ R1,A
DEC R1
MOV A,乙
MOV @ R1,一个
DEC R1
RET
INT_T0:MOV TH0,#(65536 - 2000)/ 256
MOV TL0,#(65536-2000)MOD 256
MOV A,#DISPBUF
ADD A,DISPBIT
MOV R0,A
MOV一个,@ R0
MOV DPTR,#TABLE
MOVC A,@ A + DPTR
MOV P0,一个
MOV A,DISPBIT
MOV DPTR,#TAB /> MOVC A,@ A + DPTR
MOV P2,A
INC DISPBIT
MOV A,DISPBIT
CJNE A,#08H,KNA
MOV DISPBIT,# 00H
KNA:T2SCNTA INC
MOV A,T2SCNTA
CJNE A,#100,DONE
MOV T2SCNTA,#00H
INC T2SCNTB
MOV A, T2SCNTB
CJNE A,#05H,做
MOV T2SCNTB,#00H
INC第二
MOV A,第二
CJNE A,#60,NEXT
#00H MOV第二的
INC MINITE
MOV A,MINITE
CJNE A,#60,NEXT
MOV MINITE,#00H
INC小时
MOV A,HOUR
CJNE A,#24,NEXT
MOV HOUR,#00H
NEXT:LCALL DISP
DONE:RETI
TABLE:DB 0C0H,0F9H,0A4H ,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH
TAB:DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
END

电子时钟方案,以满足您的要求。我希望能对你有用。
程序的时间格式

:12-00-00,无论时 - 分 - 秒

亮点:P3.2进行了调整。 P3.3分段监管。 P3.4秒进行调整。三键,每按一次加一。

晶体:12MHZ的

数码管说明:共阳极数码管。 8个数码管。分享两个共阳极数码管。

其中,P0口数码管的段选择器,P2口为数码管的选择。

此程序已被证明! ! !

汇编源代码如下:

EQU 30H

MINITE EQU 31H

HOUR EQU 32H

HOURK BIT P3.2

MINITEK BIT P3。 3 / SECONDK BIT P3.4

DISPBUF EQU 40H

DISPBIT EQU 48H

T2SCNTA EQU 49H

T2SCNTB EQU 4AH

TEMP EQU 4BH

ORG 00H BR /> LJMP START

ORG 0B?在H

LJMP INT_T0

START:MOV#00H

,#00H MOV MINITE

的MOV小时,12 ,#00H MOV DISPBIT BR /> MOV T2SCNTA

,#00H MOV T2SCNTB

MOV TEMP,#0FEH

LCALL DISP

MOV TMOD,#00H,#01H

MOV TH0,#( 65536-2000)/ 256

MOV TL0,#(65536-2000)MOD 256

SETB TR0

SETB ET0

SETB EA

WT“:JB SECONDK,在NK1

LCALL DELY10MS

JB SECONDK,NK1

INC第二

MOV A,

CJNE A,#60,NS60 MOV第二,#00H

NS60:LCALL DISP JNB SECONDK

NK1,NK2

LCALL DELY10MS

JB MINITEK:JB MINITEK,NK2

INC MINITE / MOV A,MINITE
> CJNE A,#60,NM60

MOV MINITE,#00H

NM60:LCALL DISP JNB MINITEK,

NK2:JB HOURK,NK3

LCALL DELY10MS

JB HOURK,NK3

INC小时

CJNE A第24 NH24

MOV小时,小时

MOV A,#00H

NH24:LCALL DISP

JNB HOURK

NK3:LJMP WT

DELY10MS:MOV R6,#10

D1:MOV R7,#248

DJNZ R7,$ DJNZ R6,D1 </ RET

DISP:MOV A,#DISPBUF

ADD A,#8

DEC A的

MOV R1,一个

MOV A,HOUR

MOV B和#10

DIV AB 的MOV _at_ R1的

DEC R1

MOV A,B

> MOV _at_ R1,一个

十二月R1

MOV A,#10

MOV R1,一个

DEC R1

MOV A,MINITE

MOV B#10#

DIV AB _at_

MOV @ R1,一个

DEC R1

MOV A,B

MOV @ R1,一个

DEC R1 / MOV A#10

MOV _at_ R1,

DEC R1

。 MOV A,第二

MOV B的第10

DIV AB

MOV _at_ R1一个

DEC R1

MOV A,B

MOV _at_ R1,一个

DEC R1

RET

INT_T0:MOV TH0,#(65536 - 2000)/ 256

MOV TL0,#(65536-2000)MOD 256

MOV A,#DISPBUF

ADD A,DISPBIT

MOV R0,一个

MOV A,@ R0

MOV DPTR,#TABLE

MOVC A _at_ A + DPTR

MOV P0,A为

MOV A,DISPBIT

MOV DPTR,#TAB /> MOVC A,@ A + DPTR

MOV P2,A <BR / INC DISPBIT

MOV A,DISPBIT

CJNE A,#08H,KNA

MOV DISPBIT,#00H

KNA:T2SCNTA INC

MOV A,T2SCNTA <BR / CJNE A,#100,做

MOV T2SCNTA,#00H

INC T2SCNTB

MOV A,T2SCNTB

CJNE A,#05H,做

MOV T2SCNTB# 00H

INC第二

CJNE A MOV A,#60,NEXT

第二

00H MOV INC MINITE

MINITE

CJNE A,MOV A,#60,NEXT(下一个)

MOV MINITE,#00H

INC小时

MOV A,HOUR

CJNE A,#24,NEXT

MOV HOUR,#00H

NEXT:LCALL DISP

DONE:RETI

TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H 0BFH

TAB:DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
END


电子时钟程序(单片机汇编语言编写,不要C语言)
按键说明:P3.2为时调节。P3.3为分调节。P3.4为秒调节。这三个按键均是每按一次加一。晶振说明:12MHZ 数码管说明:共阳数码管。共8个数码管。共用了两个4连共阳数码管。其中,P0口为数码管的段选,P2口为数码管的位选。本程序已通过实践验证!!!汇编源程序如下:SECOND EQU 30H MINITE ...

51单片机简易电子钟设计。汇编语言编写
KEYVAL EQU 30HKEYTM EQU 31HKEYSCAN EQU 32HDAT EQU 33HSCANLED EQU 39HCLK EQU 77HSEC EQU 78HMIN EQU 79HHOUR EQU 7AHPAUSE BIT 00HDOT BIT 01HORG 0000HLJMP MAINORG 000BHLJMP T0ISR ;50ms定时ORG 001BHLJMP T1ISR ;扫描显示ORG 0030HMAIN: MOV SP,#5FH MOV TMOD,#11H M...

利用8086汇编语言做一个电子时钟·可以修改日期和时间的·12H\/24H能...
好像有点困难。

基于8086汇编语言的指针式屏显电子钟的设计程序
这个是有设置闹铃时间的电子钟,你参考一下:;具有时钟功能,可以显示并不断刷新当前时间;并可以预先设置好响铃时间,在到达响铃时间就会响铃 data segment hour dw ? ;响铃时的小时数 minute dw ? ;响铃时的分钟数 ten dw 10 s1 db 'please set the time when the clock will ring(set it ...

设计一个24小时制时钟计数器。用汇编语言
下面的程序,经过仿真测试,满足要求。晶振为12MHz.ORG 0000H MOV TMOD, #01H MOV TH0, #3CH MOV TL0, #0B0H MOV R7, #20 SETB TR0 MOV R4, #0 MOV R5, #0 MOV R6, #0 _DISP:MOV P2, R4 MOV P1, R5 MOV P0, R6 START:JNB P3.0, T0_TF0 CLR ...

求一电子时钟电路和汇编语言源程序,能实现年月日和时间的显示以及调
MOV AH,2; ;读取系统时钟 INT 1AH PUSH DX PUSH CX POP BX PUSH BX CALL SHOWBYTE CALL SHOWCOLON POP BX XCHG BH,BL CALL SHOWBYTE CALL SHOWCOLON POP BX CALL SHOWBYTE MOV DX,CS:OLDCUR MOV AH,2 XOR BH,BH INT 10H POP DX POP CX POP BX POP AX IRET SHOWBYTE PROC NEAR P...

51单片机电子时钟设计怎么更改led灯闪烁频率用汇编语言
你这个程序错误太多了,用汇编时关键的几个程序段都未分清:主程序、定时器T0中断、定时器T1中断等,因MOV IE,#8AH语句说明用的是中断方式,显然漏了 ORG 0000H、ORG 000BH和ORG 001BH伪指令。要改时间可改 CJNE R7,#160,JW中的160。

用汇编语言编写一个数字电子钟程序代码
str db 20 db 50h,7,0,0 db 6ch,7,0,1 db 65h,7,0,1 db 61h,7,0,1 db 73h,7,0,1 db 65h, 7,0,1 db 70h,7,1,-10 db 72h,7,0,1 db 65h,7,0,1 db 73h,7,0,1 db 73h,7,0,1 db 53h,7,0,2 db 6bh,7,0,2 db 65h,7,0,1 db 79h,7,0,1 db ...

汇编语言电子时钟的课程设计
call bctd ;调用进制转换子程序 push ax and al,0f0h ;选取al高四位 mov cl,4 ;设置右循环的次数 rol al,cl ;右循环 or al,30h ;加30h得到ACSII码 mov [bx],al ;将得到的结果送到t_buff缓冲区 inc bx ;BX自加1,指针指向下一个缓冲区的下一个地址 pop ax and ...

求一个设计,用单片机做出电子时钟,要汇编语言的,有的发我邮箱,2236591958...
div ab acall disscan mov a,r1 rl a mov r1,a mov a,b acall disscan ljmp display ;\/\/***分隔线显示子程序 fenggexian:mov p0,#0bfh mov a,r1 rl a mov r1,a mov p2,r1 mov r5,#1 acall delay mov p2,#0 mov r5,#1 acall delay ...

兴海县15712838035: 电子时钟的制作汇编语言,包括温度计 -
缪威肝苏: 电子时钟程序已经符合你的要求.我希望能对你有用. 程序:时间格式 :12-00-00,无论是时 - 分 - 秒 重点说明:P3.2过调整. P3.3子调节. P3.4秒调整.三个按键,每按一次加一. 水晶说明:12MHZ 数码管说明:共阳极数码管. 8个数码...

兴海县15712838035: 单片机汇编语言编写电子时钟的汇编程序 -
缪威肝苏: ;======================作者夏生成=================================================;======================QQ:254060575=================================================;;====================...

兴海县15712838035: 电子时钟程序(单片机汇编语言编写,不要C语言) -
缪威肝苏: 这个电子钟程序已经基本符合你的要求.希望能对你有用.程序说明:显示的时间格式为:12-00-00,既,时-分-秒 按键说明:P3.2为时调节.P3.3为分调节.P3.4为秒调节.这三个按键均是每按一次加一.晶振说明:12MHZ 数码管说明:共...

兴海县15712838035: 汇编语言 电子钟 -
缪威肝苏: 用汇编语言怎么实现时钟的实时显示,请各位帮忙!!! ;;在右上角显示时钟,按任一键结束;用MASM5.0编译通过.data segment HH DB 0,0,':' MM DB 0,0,':' SS1 DB 0,0 data ends code segment main proc far assume cs:code start: push ds ...

兴海县15712838035: C51 单片机汇编程序制作时钟
缪威肝苏: 包含小时,可直接注释掉小时显示部分. ORG 0000H SJMP MAIN ORG 000BH AJMP TIMER0 ORG 0030H MAIN: MOV DPTR,#TABLE MOV P0,#0ffh MOV R0,#0 MOV R1,#0 MOV R2,#200 MOV R3,#50 MOV R4,#0 MOV R5,#0 MOV R6,#0 ...

兴海县15712838035: 用汇编语言编写一个数字电子钟程序代码
缪威肝苏: 设计一个时钟程序,由键盘输入当前时、分、秒值,随即 显示时间并不停计时,当有键盘按下时,返回DOS. http://wenwen.sogou.com/z/q799785284.htm 楼主参考一下

兴海县15712838035: MCS - 51 设计数字温度计 -
缪威肝苏: 程序如下:MIA EQU 30HMIAO EQU 31HFEN EQU 32HSHI EQU 33HORG 0000HSJMP STARTORG 000BHLJMP TTTORG 0010HSTART:MOV SP,#60HMOV MIAO,#0MOV MIA,#20MOV FEN,#0MOV SHI,#12MOV TMOD,#01H...

兴海县15712838035: 汇编语言电子时钟的课程设计 -
缪威肝苏: ;name: ELECTRONIC CLOCK data segment mess1 db ' ****************ASM ASSIGNMENT**************** ',0ah,0dh db ' ',0ah,0dh db ' ***************ELECTRONIC CLOCK*************** ',0ah,0dh db ' ',0ah,0dh db ' ',0ah,0dh db ' *******Press C or c to ...

兴海县15712838035: 用汇编语言或C语言结合isis编写“电子时钟”程序 -
缪威肝苏: code segment assume cs:code,ds:code org 100h start:push cs pop ds mov ax,3 int 10h mov ax,0b800h mov es,ax cld Q0:lea dx,Tips ;提示输入时间 mov ah,9 int 21h;输入当前时、分、秒值 call input_bcd mov HH,al mov ax,0e3ah ;':' int 10h call ...

兴海县15712838035: 设计一个24小时制时钟计数器.用汇编语言 -
缪威肝苏: 刚写了一个,应该没问题 ORG 2000H MOV R0,#0 ;R0,R1,R2初始化 MOV R1,#0 MOV R2,#0 MOV P0,#0;P0,P1,P2置0 MOV P1,#0 MOV P2,#0 INPUT:JB P3.0,STEP START:INC R0;秒钟计数 MOV A,R0 ACALL OUTPUT;计算bcd码 CJNE R0,...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网