『壹』 汇编语言要求编写一个时钟程序 用八位数码管实现时分秒的计时功能
我以前做的一个6位数码管的时钟程序,你可以看看,其实6位足够了。
KEYVAL EQU 30H
KEYTM EQU 31H
KEYSCAN EQU 32H
DAT EQU 33H
SCANLED EQU 39H
CLK EQU 77H
SEC EQU 78H
MIN EQU 79H
HOUR EQU 7AH
PAUSE BIT 00H
DOT BIT 01H
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR ;50ms定时
ORG 001BH
LJMP T1ISR ;扫描显示
ORG 0030H
MAIN:
MOV SP,#5FH
MOV TMOD,#11H
MOV TH0,#03CH
MOV TL0,#0B0H
MOV TH1,#0ECH
MOV TL1,#078H
MOV KEYVAL,#0
MOV SCANLED,#0
MOV 33H,#10H
MOV 34H,#10H
MOV 35H,#10H
MOV 36H,#10H
MOV 37H,#10H
MOV 38H,#10H
MOV SEC,#0
MOV MIN,#0
MOV HOUR,#0
MOV CLK,#0
CLR PAUSE
SETB EA
SETB ET1
SETB TR1
LOOP:
LCALL KEYSEL
MOV A,KEYVAL
CJNE A,#0FFH,LOOP1
SJMP LOOP
LOOP1:
CJNE A,#10,LOOP2 ;“绝森ON”启动
SETB TR0
SETB ET0
SETB PAUSE
SJMP LOOP
LOOP2:
CJNE A,#11,LOOP3 ;“=”清零
MOV SEC,#0
MOV MIN,#0
MOV HOUR,#0
LCALL DISCHG
SJMP LOOP
LOOP3:
CJNE A,#15,LOOP4 ;“+”暂停
CLR TR0
CLR ET0
CLR PAUSE
SJMP LOOP
LOOP4:
CJNE A,#14,LOOP5 ;“-”清显示暂停
MOV 33H,#10H
MOV 34H,#10H
MOV 35H,#10H
MOV 36H,#10H
MOV 37H,#10H
MOV 38H,#10H
CLR TR0
CLR ET0
CLR PAUSE
SJMP LOOP
LOOP5:
CJNE A,#10,LOOP6 ;数字键
LOOP6:
JC LOOP7
LJMP LOOP
LOOP7:
JNB PAUSE,LOOP8 ;暂停状态可以输入数字键槐宏备
LJMP LOOP
LOOP8:
MOV 33H,34H
MOV 34H,35H
MOV 35H,36H
MOV 36H,37H
MOV 37H,38H
MOV 38H,KEYVAL
MOV A,33H
SWAP A
ORL A,34H
LCALL BCDH
MOV HOUR,A
MOV A,35H
SWAP A
ORL A,36H
LCALL BCDH
MOV MIN,A
MOV A,37H
SWAP A
ORL A,38H
LCALL BCDH
MOV SEC,A
LJMP LOOP
;------------------
;BCD转换为十六进制
BCDH:
MOV B,#10H
DIV AB
MOV R7,B
MOV B,#10
MUL AB
ADD A,R7
RET
;------------------
;十六进制转换为BCD
HBCD:
MOV B,#10
DIV AB
SWAP A
ORL A,B
RET铅毁
;------------------
KEYSEL:
MOV KEYVAL,#0
MOV KEYSCAN,#0EFH
LCALL GETKEY
MOV A,KEYTM
JZ KEYS1
MOV KEYVAL,A
SJMP KEYRTN
KEYS1:
MOV KEYSCAN,#0DFH
LCALL GETKEY
MOV A,KEYTM
JZ KEYS2
CLR C
ADD A,#4
MOV KEYVAL,A
SJMP KEYRTN
KEYS2:
MOV KEYSCAN,#0BFH
LCALL GETKEY
MOV A,KEYTM
JZ KEYS3
CLR C
ADD A,#8
MOV KEYVAL,A
SJMP KEYRTN
KEYS3:
MOV KEYSCAN,#7FH
LCALL GETKEY
MOV A,KEYTM
JZ KEYRTN
CLR C
ADD A,#12
MOV KEYVAL,A
KEYRTN:
LCALL CHGKEY
RET
;--------------------
GETKEY:
MOV KEYTM,#0
MOV A,KEYSCAN
MOV P3,A
NOP
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY
MOV R2,#10
LCALL DELAY
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JZ NOKEY
MOV A,P3
ANL A,#0FH
MOV R7,A
SF:
MOV A,P3
ANL A,#0FH
XRL A,#0FH
JNZ SF
MOV A,R7
CJNE A,#0EH,NK1
MOV KEYTM,#1
SJMP NOKEY
NK1:
CJNE A,#0DH,NK2
MOV KEYTM,#2
SJMP NOKEY
NK2:
CJNE A,#0BH,NK3
MOV KEYTM,#3
SJMP NOKEY
NK3:
CJNE A,#07H,NOKEY
MOV KEYTM,#4
NOKEY: RET
;--------------------
DELAY:
MOV R3,#50
DELAY1:
MOV R4,#100
DJNZ R4,$
DJNZ R3,DELAY1
DJNZ R2,DELAY
RET
;--------------------
T0ISR:
PUSH ACC
CLR TR0
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
INC CLK
MOV A,CLK
CJNE A,#20,T0ISRE
MOV CLK,#0
INC SEC
MOV A,SEC
CJNE A,#60,T0ISRE
MOV SEC,#0
INC MIN
MOV A,MIN
CJNE A,#60,T0ISRE
MOV MIN,#0
INC HOUR
MOV A,HOUR
CJNE A,#24,T0ISRE
MOV SEC,#0
MOV MIN,#0
MOV HOUR,#0
T0ISRE:
LCALL DISCHG
POP ACC
RETI
;--------------------
DISCHG:
MOV A,HOUR
LCALL HBCD
PUSH ACC
ANL A,#0FH
MOV 34H,A
POP ACC
ANL A,#0F0H
SWAP A
MOV 33H,A
MOV A,MIN
LCALL HBCD
PUSH ACC
ANL A,#0FH
MOV 36H,A
POP ACC
ANL A,#0F0H
SWAP A
MOV 35H,A
MOV A,SEC
LCALL HBCD
PUSH ACC
ANL A,#0FH
MOV 38H,A
POP ACC
ANL A,#0F0H
SWAP A
MOV 37H,A
RET
;--------------------
T1ISR:
PUSH ACC
CLR TR1
MOV TH1,#0ECH
MOV TL1,#78H
SETB TR1
MOV DPTR,#LEDTAB
T100:
MOV R0,#DAT
MOV A,SCANLED
ADD A,R0
MOV R0,A
MOV A,SCANLED
JNZ T101
MOV P2,#01H
CLR DOT
SJMP T1DIS
T101:
DEC A
JNZ T102
MOV P2,#02H
SETB DOT
SJMP T1DIS
T102:
DEC A
JNZ T103
MOV P2,#04H
CLR DOT
SJMP T1DIS
T103:
DEC A
JNZ T104
MOV P2,#08H
SETB DOT
SJMP T1DIS
T104:
DEC A
JNZ T105
MOV P2,#10H
CLR DOT
SJMP T1DIS
T105:
MOV P2,#20H
CLR DOT
T1DIS:
MOV A,@R0
MOVC A,@A+DPTR
JNB DOT,T1DIS1
ORL A,#01H
T1DIS1:
CPL A
MOV P0,A
INC SCANLED
MOV A,SCANLED
CJNE A,#6,T1END
MOV SCANLED,#0
T1END:
POP ACC
RETI
;--------------------
CHGKEY:
MOV A,KEYVAL
JZ KV16
DEC A
JNZ KV01
MOV KEYVAL,#7
RET
KV01:
DEC A
JNZ KV02
MOV KEYVAL,#4
RET
KV02:
DEC A
JNZ KV03
MOV KEYVAL,#1
RET
KV03:
DEC A
JNZ KV04
MOV KEYVAL,#10
RET
KV04:
DEC A
JNZ KV05
MOV KEYVAL,#8
RET
KV05:
DEC A
JNZ KV06
MOV KEYVAL,#5
RET
KV06:
DEC A
JNZ KV07
MOV KEYVAL,#2
RET
KV07:
DEC A
JNZ KV08
MOV KEYVAL,#0
RET
KV08:
DEC A
JNZ KV09
MOV KEYVAL,#9
RET
KV09:
DEC A
JNZ KV10
MOV KEYVAL,#6
RET
KV10:
DEC A
JNZ KV11
MOV KEYVAL,#3
RET
KV11:
DEC A
JNZ KV12
MOV KEYVAL,#11
RET
KV12:
DEC A
JNZ KV13
MOV KEYVAL,#12
RET
KV13:
DEC A
JNZ KV14
MOV KEYVAL,#13
RET
KV14:
DEC A
JNZ KV15
MOV KEYVAL,#14
RET
KV15:
DEC A
JNZ KV16
MOV KEYVAL,#15
RET
KV16:
MOV KEYVAL,#0FFH
RET
;--------------------
LEDTAB: DB 0FCH ;"0" 00H
DB 60H ;"1" 01H
DB 0DAH ;"2" 02H
DB 0F2H ;"3" 03H
DB 66H ;"4" 04H
DB 0B6H ;"5" 05H
DB 0BEH ;"6" 06H
DB 0E0H ;"7" 07H
DB 0FEH ;"8" 08H
DB 0F6H ;"9" 09H
DB 0EEH ;"A" 0AH
DB 3EH ;"B" 0BH
DB 9CH ;"C" 0CH
DB 7AH ;"D" 0DH
DB 9EH ;"E" 0EH
DB 8EH ;"F" 0FH
DB 00H ;" " 10H
;--------------------
『贰』 博途中PLC选择S7-300 ,如何设置和读取年月日时分秒
创建DB全局数据块宴核——双击打开DB块——起名。。在数据类型下拉框中选择DATE AND TIME 并且给穗祥基定时间。编译——保存
DATE AND TIME占用8个字节
对应字节如下
1年猜谨2月3日4时5分6秒7毫秒8微秒
『叁』 用汇编语言在c51单片机上实现6(时分秒)位倒计时程序,能够调节设置时间,并能暂停,终止,继续
ORG0000H
JMPBEGIN
ORG 000BH
LJMP T0INT
ORG 001BH
LJMP T1INT
LEDD EQU 30H
LEDC EQU36H
SECC EQU37H
MINC EQU38H
HOUR EQU39H
TCNT EQU3AH
ORG0030H
;---------------------------------------
TABLE:;共阴极数码管显示代码表
DB0FCH ;"0" 00H
DB60H ;"1" 01H
DB0DAH ;"2" 02H
DB0F2H ;"3" 03H
DB66H ;"4" 04H
DB0B6H ;"5" 05H
DB0BEH ;"6" 06H
DB0E0H ;"7" 07H
DB0FEH ;"8" 08H
DB0F6H ;"9" 09H
DB0EEH ;"A" 0AH
DB3EH ;"B" 0BH
DB9CH ;"C" 0CH
DB7AH ;"D"源码码 0DH
DB9EH ;"E" 0EH
DB8EH ;"F" 0FH
DB00H ;"" 10H
;DB3FH,06H,5BH,4FH,66H;12345
;DB6DH,7DH,07H,7FH,;6789
;---------------------------------------
DELAY:
MOVR6,#25
DLY01:
MOVR7,#100
DJNZR7,$
DJNZR6,DLY01
RET
;---------------------------------------
BEGIN:
MOVSP,#5FH
MOVTMOD,#11H
MOVTH0,#3CH
MOVTL0,#0B0H
MOVTH1,#0F4H
MOVTL1,#48H
MOVLEDC,#6
MOV雹哪R0,#LEDD
CLRA
INIT:
MOV@R0,A
INCR0
DJNZLEDC,INIT
SETBET1
SETBTR1
MOVP2,#0
MOVTCNT,#0
MOVHOUR,#0
MOVMINC,#0
MOVSECC,#0
SETBET0
SETBEA
LOOP:
JBP1.0,LOOP1
LCALLDELAY
JBP1.0,LOOP1
JNBP1.0,$
INCHOUR
MOVA,HOUR
CJNEA,#24,LOOPH
LOOPH:
JCLOOPH1
MOVHOUR,#0
LOOPH1:
LCALLDISHOUR
SJMPLOOP
LOOP1:
JBP1.1,LOOP2
LCALLDELAY
JBP1.1,LOOP2
JNBP1.1,$
MOVA,HOUR
JNZLOOPH2
MOVHOUR,#23
SJMPLOOPH3
LOOPH2:
DECHOUR
LOOPH3:
LCALLDISHOUR
SJMPLOOP
LOOP2:
JBP1.2,LOOP3
LCALLDELAY
JBP1.2,LOOP3
JNBP1.2,$
INCMINC
MOVA,MINC
CJNEA,#60,LOOPM
LOOPM:
JCLOOPM1
MOVMINC,#0
LOOPM1:
LCALLDISMIN
SJMPLOOP
LOOP3:
JBP1.3,LOOP4
LCALLDELAY
JBP1.3,LOOP4
JNBP1.3,$
MOVA,MINC
JNZLOOPM2
MOVMINC,#59
SJMPLOOPM3
LOOPM2:
DECMINC
LOOPM3:
LCALLDISMIN
SJMPLOOP
LOOP4:
JBP1.4,LOOP5
LCALLDELAY
JBP1.4,LOOP5
JNBP1.4,$
INCSECC
MOV模此A,SECC
CJNEA,#60,LOOPS
LOOPS:
JCLOOPS1
MOVSECC,#0
LOOPS1:
LCALLDISSEC
LJMPLOOP
LOOP5:
JBP1.5,LOOP6
LCALLDELAY
JBP1.5,LOOP6
JNBP1.5,$
MOVA,SECC
JNZLOOPS2
MOVSECC,#59
SJMPLOOPS3
LOOPS2:
DECSECC
LOOPS3:
LCALLDISSEC
LJMPLOOP
LOOP6:
JBP3.1,LOOP7
LCALLDELAY
JBP3.1,LOOP7
JNBP3.1,$
CPLTR0
LOOP7:
LJMPLOOP
;---------------------------------------
T1INT:
PUSHACC
CLRTR1
MOVTH1,#0F4H
MOVTL1,#48H
SETBTR1
MOVDPTR,#TABLE
MOVR0,#LEDD
MOVA,LEDC
T1INT0:
JNZT1INT1
MOVP2,#01H
MOVA,@R0
MOVCA,@A+DPTR
CPLA
MOVP0,A
SJMPT1INTD
T1INT1:
DECA
JNZT1INT2
MOVP2,#02H
INCR0
MOVA,@R0
MOVCA,@A+DPTR
CPLA
MOVP0,A
SJMPT1INTD
T1INT2:
DECA
JNZT1INT3
MOVP2,#04H
INCR0
INCR0
MOVA,@R0
MOVCA,@A+DPTR
CPLA
MOVP0,A
SJMPT1INTD
T1INT3:
DECA
JNZT1INT4
MOVP2,#08H
INCR0
INCR0
INCR0
MOVA,@R0
MOVCA,@A+DPTR
CPLA
MOVP0,A
SJMPT1INTD
T1INT4:
DECA
JNZT1INT5
MOVP2,#10H
INCR0
INCR0
INCR0
INCR0
MOVA,@R0
MOVCA,@A+DPTR
CPLA
MOVP0,A
SJMPT1INTD
T1INT5:
DECA
JNZT1INTD
MOVP2,#20H
INCR0
INCR0
INCR0
INCR0
INCR0
MOVA,@R0
MOVCA,@A+DPTR
CPLA
MOVP0,A
T1INTD:
INCLEDC
MOVA,LEDC
CJNEA,#6,T1INT6
T1INT6:
JCT1INTE
MOVLEDC,#0
T1INTE:
POPACC
RETI
;---------------------------------------
HBCD:
MOVB,#10
DIVAB
SWAPA
ORLA,B
RET
;---------------------------------------
T0INT:
PUSHACC
CLRTR0
MOVTH0,#3CH
MOVTL0,#0B0H
SETBTR0
INCTCNT
MOVA,TCNT
CJNEA,#20,T0INT1
T0INT1:
JCT0INTE
MOVTCNT,#0
MOVA,SECC
ORLA,MINC
ORLA,HOUR
JNZT0INT2
SETBP3.0
CLRTR0
POPACC
RETI
T0INT2:
MOVA,MINC
ORLA,HOUR
JNZT0INT3
MOVA,SECC
CJNEA,#6,T0INT21
T0INT21:
JNCT0INT22
CPLP3.0
T0INT22:
DECSECC
LCALLDISSEC
SJMPT0INTE
T0INT3:
MOVA,SECC
JZT0INT31
DECSECC
LCALLDISSEC
SJMPT0INTE
T0INT31:
MOVSECC,#59
LCALLDISSEC
MOVA,MINC
JZT0INT32
DECMINC
LCALLDISMIN
SJMPT0INTE
T0INT32:
MOVMINC,#59
LCALLDISMIN
DECHOUR
LCALLDISHOUR
T0INTE:
POPACC
RETI
;---------------------------------------
DISSEC:
MOVA,SECC
LCALLHBCD
PUSHACC
ANLA,#0FH
MOV30H,A
POPACC
SWAPA
ANLA,#0FH
MOV31H,A
RET
;---------------------------------------
DISMIN:
MOVA,MINC
LCALLHBCD
PUSHACC
ANLA,#0FH
MOV32H,A
POPACC
SWAPA
ANLA,#0FH
MOV33H,A
RET
;---------------------------------------
DISHOUR:
MOVA,HOUR
LCALLHBCD
PUSHACC
ANLA,#0FH
MOV34H,A
POPACC
SWAPA
ANLA,#0FH
MOV35H,A
RET
;---------------------------------------
END
『肆』 8进8出可编程时间继电器如何设置时间说明
您好,8进8出可编程时间继电器的设置时间说明如下:
1、您需要先准备一台8进8出可编程时间继电器,并将其连接到电源上。
2、您可以使用按钮或者软件来设置时间,您可模肢段以根据自己的需要来设置饥颂时间,如果您使用软件,您可以通过计算机来设置时间。
3、您可以设置每个输出口的时间,比如您可以设置每个输出口的时间为1秒,2秒,3秒等等。
4、您可以设置每个输出口的输出状态,比如您可以设置每个输出口的输出状态为开或关。
5、您可以设置每个输出口的输出模式,比如您可以设置每个输出口的输出模式为单次触发或多次触发。
6、您可以设置每个输出口的输出电流,比如您可以设置每个输出口的输出电流为1A,2A,3A等等。
7、您可以设置每个输出口的输出电压,比如您可以设置每个输出口的输出电压为12V,24V,36V等等。
8、您可以设置每个输出口的输出频率,比如您可以设置每个输出旦誉口的输出频率为50Hz,60Hz,100Hz等等。
9、您可以设置每个输出口的输出功率,比如您可以设置每个输出口的输出功率为1W,2W,3W等等。
10、您可以设置每个输出口的输出温度,比如您可以
『伍』 博途1200时钟脉冲设置
设置如下
1、先启用时钟储存字节,指定地址(不要和已用的M区重合)2,下载程序,下载前在离线模式编译要选择硬件(完全重建),否则不会生效
一般PLC里面会有几个固定的变量来作为时钟基准,如千分之一秒,百分之一秒,十分之一秒以及一秒。它们会以相应的频率进行不断地脉冲触发。有了这些变量对PLC编程提供了方便。西门子300系列的时钟脉冲要在CPU的硬件组态中设置对应的时钟寄存器才能生效,200系列有固定系统寄存器位(SMB)对应不同的时钟脉冲,利润SM0.5对应的是1赫兹脉冲。
TIA博途采用此新型、统一软件框架,可在同一开发环境中组态西门子的所有可编程控制器、人机界面和驱动装置。在控制器、驱动装置和人机界面之间建立通信时的共享任务,可大大降低连接和组态成本。例如,用户可方便地将变量从可编程控制器拖放到人机界面设备的画面中。然后在人机界面内即时分配变量,并在后台自动建立控制器与人机界面的连接,无需手动组态。
『陆』 西门子TIA博途里怎么直接调用一边写好的fc/fb块,还有在博途里scl编程怎么直接输入i/o点,定时器计数器等
ET是查询这个计时器的计时时间的,就是说看一下设定的PT时间走了多少。如果不需要查询,ET这个可以不用管。
另外,大多数人一般都是用梯形图编程,不用这个语言,不直观。
『柒』 比赛时如何记录时分秒
比赛时用秒表计时器。
1.功能:
(1)根据用户设置。按0.1秒或1秒为最小单位计时,满60秒进为分钟,最大单位是分钟。
默认分钟为两位,超过两位后自动变为三位分钟耐此。
(2)显示格式为:
1.最小计时单位为0.1秒昌氏迅时,显示为:分钟:秒:0.1秒。例如:02:07:5
2.最小计时单位为1秒时,显示为:分钟:秒。例如:02:07
2.操作步骤
(1)。按开始按钮,开始计时,此时开始按钮变为暂停按钮
(2)。按暂停按钮,暂停计时,显示当前的计时时间
(3)。按停止按钮,停止计时,暂停按钮恢复为开始按钮,时间显示为:00:00:00
(4)按menu键弹出menu菜单,第一项为设置计时单位,含有子核笑菜单,可以设置计时单位为1秒或者为0.1秒。
『捌』 前端计算时分秒倒计时
//计算倒计时
var getTime 戚逗= function (hmin) {
if (hmin < 1000) {
return '00:00:00'
}
var time = parseInt(hmin / 1000)
var hour = Math.floor(time / 60 / 60)
time = time - hour * 60 * 60
if (hour < 10) {
hour = '0' + hour
}
var min = Math.floor(time / 60)
time = time - min * 60
if (min < 10) {
min = '0' + min
}
if (time < 10) {
time = '0' + time
}
if (hour >= 渗仔则240) {
return '大于10天'
}
return hour + '丛棚:' + min + ':' + time
}
mole.exports = {
getTime: getTime
}