分享好友 天南地北首页 网站导航

光晕里雷神之锤盔甲

网友发布 2023-07-13 12:12 · 头闻号仪器机械

雷神锤铠甲:一期:表面在光线下泛着略偏金绿色的彩虹般的色彩。它能覆盖大部分的身体,包括腹沟、大腿、膝盖、胫部、胸膛、肩膀还有前臂等;头盔带有一个电源组,但比任何标准的陆战队头盔电池组都显得轻巧。而盔甲里则衬着粗糙的黑色金属。

外壳由高强度的复合材料制成,里面加入了一种能够抵消能量武器攻击力量的材料。每一套战斗服装都有一层能保持温度的凝胶层,其密度能够灵敏地发生变化。紧贴着穿着者的是一层湿度吸收服,上面的生理调节器能够不停地调节温度,另外,穿着者的神经系统相联接的微电脑。内部有一种新型液态活性金属。这是一种不定形、不定积和可增加强度的金属。,能够让穿着者力量加倍,将反应速度提高到普通人的五倍。

二期:盔甲层略厚一点儿,而黑色内衬上的结构也更为复杂。核动力背包比一期大上一半,关节处布满了明亮发光的细小槽口。成功复制并改进了豺狼人用的能量盾发生器。

装甲的反馈电路和内衬生化衣之间有一个新的夹层,是备用的记忆处理器超导层。盔甲可携带入侵型人工智能。雷神锤盔甲系统几乎拥有和舰载人工智能系统相同的能力。入侵型人工智能可以帮你与盔甲协调,并在战斗中为你提供战术和战略情报。并改善穿着者和盔甲之间的协同问题

;****************************************************

;变量定义

;****************************************************

DQ BIT P2.4 ;DS18B20数据位

FLAG1 BIT 00H

SIGN BIT 01H ;符号位

MSB EQU 30H ;转换数据高位字节

LSB EQU 31H ;转换数据低位字节

INTEG EQU 32H ;转换数据整数部分

DECIM EQU 33H ;转换数据小数部分

SEG_S EQU 34H ;符号位段码

SEG_I3 EQU 35H

SEG_I2 EQU 36H

SEG_I1 EQU 37H ;3位整数段码

SEG_D1 EQU 38H ;1位小数段码

SEG_C EQU 39H ;符号"C"段码

;******************************************************

;主程序

;******************************************************

ORG 0000H

MAIN: LCALL INIT_1820 ;DS18B20初始化

LCALL GET_TEMPER ;读取转换数据

LCALL DATA_PROC ;数据处理

LCALL SEG_GEN ;生成显示码

LCALL DISPLAY ;数码显示

SJMP MAIN

;****************************************************************

;DS18B20复位初始化子程序

;****************************************************************

INIT_1820: SETB DQ

NOP

CLR DQ ;主机发出延时537微秒的复位低脉冲

MOV R1,#3

TSR1: MOV R0,#107

DJNZ R0,$

DJNZ R1,TSR1

SETB DQ ;拉高数据线

NOP

NOP

NOP

MOV R0,#25H

TSR2: JNB DQ,TSR3 ;等待DS18B20回应

DJNZ R0,TSR2 ;延时并检测应答信号

LJMP TSR4

TSR3: SETB FLAG1 ;置标志位,表示DS1820存在

LJMP TSR5

TSR4: CLR FLAG1 ;清标志位,表示DS1820不存在

LJMP TSR6

TSR5: MOV R0,#117

DJNZ R0,$ ;时序要求延时一段时间

TSR6: SETB DQ

RET

;*****************************************************************

;读出转换后的温度值

;*****************************************************************

GET_TEMPER: SETB DQ

LCALL INIT_1820 ;先复位DS18B20

JB FLAG1,TSS2

RET ;判断DS1820是否存在

TSS2: MOV A,#0CCH ;跳过ROM匹配

LCALL WRITE_1820

MOV A,#44H ;发出温度转换命令

LCALL WRITE_1820

LCALL DELAY ;等待AD转换结束,12位转换需750微秒

LCALL INIT_1820 ;准备读温度前先复位

MOV A,#0CCH ;跳过ROM匹配

LCALL WRITE_1820

MOV A,#0BEH ;发出读温度命令

LCALL WRITE_1820

LCALL READ_18200 ;将读出的温度数据保存到35H/36H

RET

;*****************************************************************

;写DS18B20的子程序(有具体的时序要求)

;*****************************************************************

WRITE_1820: MOV R2,#8 ;一共8位数据

CLR C

WR1: CLR DQ

MOV R3,#6

DJNZ R3,$

RRC A

MOV DQ,C

MOV R3,#23

DJNZ R3,$

SETB DQ

NOP

DJNZ R2,WR1

SETB DQ

RET

;****************************************************************

; 读DS18B20的程序,从DS18B20中读出两个字节的温度数据

;****************************************************************

READ_18200: MOV R4,#2 ;将温度高位和低位从DS18B20中读出

MOV R1,#31H ;低位存入31H,高位存入30H

RE00: MOV R2,#8 ;数据一共有8位

RE01: CLR C

SETB DQ

NOP

NOP

CLR DQ

NOP

NOP

NOP

SETB DQ

MOV R3,#9

RE10: DJNZ R3,RE10

MOV C,DQ

MOV R3,#23

DJNZ R3,$

RRC A

DJNZ R2,RE01

MOV @R1,A

DEC R1

DJNZ R4,RE00

RET

;***********************************************************

;数据处理子程序,判断正负,并分离转换值的整数和小数部分

;符号位为SIGN,0为正,1为负

;整数部分存放在INTEG(32H)中,小数部分存放在DECIM(33H)中

;***********************************************************

DATA_PROC: CLR C

CLR SIGN

MOV A,MSB

RLC A

JC NEG ;判断符号位

LJMP PROC

NEG: CLR C ;对负数取补码

SETB SIGN

MOV A,LSB

CPL A

ADD A,#1

MOV LSB,A

MOV A,MSB

CPL A

ADDC A,#0

MOV MSB,A

PROC: MOV A,LSB ;分离转换值的整数和小数部分

ANL A,#0FH

MOV DECIM,A ;存储小数部分

MOV A,MSB

SWAP A

ANL A,#0F0H

MOV INTEG,A

MOV A,LSB

SWAP A

ANL A,#0FH

MOV R0,INTEG

ORL A,R0

MOV INTEG,A ;存储整数部分

RET

;***************************************************************

;生成显示码子程序

;符号位段码存放在SEG_S中,整数段码存放在SEG_I3到SEG_I1中

;小数部分段码存放在SEG_D1到SEG_D4中

;***************************************************************

SEG_GEN: MOV DPTR,#TABLE

JB SIGN,S_NEG

MOV SEG_S,#00H

SJMP S_INT

S_NEG: MOV SEG_S,#40H

S_INT: MOV A,INTEG

MOV B,#100

DIV AB

MOVC A,@A+DPTR

MOV SEG_I3,A ;百位数段码

MOV A,B

MOV B,#10

DIV AB

MOVC A,@A+DPTR

MOV SEG_I2,A ;十位数段码

MOV A,B

MOVC A,@A+DPTR

ORL A,#80H ;加小数点

MOV SEG_I1,A ;个位数段码

MOV DPTR,#SWITCH

MOV A,DECIM

MOV B,DECIM

ADD A,B

JMP @A+DPTR ;根据小数值查表,求段码

SWITCH: AJMP K0

AJMP K1

AJMP K2

AJMP K3

AJMP K4

AJMP K5

AJMP K6

AJMP K7

AJMP K8

AJMP K9

AJMP K10

AJMP K11

AJMP K12

AJMP K13

AJMP K14

AJMP K15

K0: MOV SEG_D1,#3FH

AJMP RETURN

K1: MOV SEG_D1,#06H

AJMP RETURN

K2: MOV SEG_D1,#06H

AJMP RETURN

K3: MOV SEG_D1,#5BH

AJMP RETURN

K4: MOV SEG_D1,#4FH

AJMP RETURN

K5: MOV SEG_D1,#4FH

AJMP RETURN

K6: MOV SEG_D1,#66H

AJMP RETURN

K7: MOV SEG_D1,#66H

AJMP RETURN

K8: MOV SEG_D1,#6DH

AJMP RETURN

K9: MOV SEG_D1,#7DH

AJMP RETURN

K10: MOV SEG_D1,#7DH

AJMP RETURN

K11: MOV SEG_D1,#07H

AJMP RETURN

K12: MOV SEG_D1,#7FH

AJMP RETURN

K13: MOV SEG_D1,#7FH

AJMP RETURN

K14: MOV SEG_D1,#6FH

AJMP RETURN

K15: MOV SEG_D1,#6FH

AJMP RETURN

RETURN: MOV SEG_C,#39H ;符号"C"的段码

RET

;*************************************************************

;显示子程序,首位为符号位,三位整数,1位小数

;最后一位"C"为摄氏度标志

;*************************************************************

DISPLAY: MOV P3,#0FFH

CLR P3.0

MOV P0,SEG_S

LCALL DELAY

SETB P3.0

CLR P3.1

MOV P0,SEG_I3

LCALL DELAY

SETB P3.1

CLR P3.2

MOV P0,SEG_I2

LCALL DELAY

SETB P3.2

CLR P3.3

MOV P0,SEG_I1

LCALL DELAY

SETB P3.3

CLR P3.4

MOV P0,SEG_D1

LCALL DELAY

SETB P3.4

CLR P3.5

MOV P0,SEG_C

LCALL DELAY

SETB P3.5

RET

;**********************************************************

;延时子程序,延时5ms

;**********************************************************

DELAY: MOV R5,#5 ;延时5ms

D1: MOV R6,#248

DJNZ R6,$

DJNZ R5,D1

RET

;**********************************************************

TABLE: DB 3FH,06H,5BH,4FH,66H ;段码表

DB 6DH,7DH,07H,7FH,6FH

END

带注释,你可以参考一下!

免责声明:本平台仅供信息发布交流之途,请谨慎判断信息真伪。如遇虚假诈骗信息,请立即举报

举报
反对 0
打赏 0
更多相关文章

收藏

点赞