雷神锤铠甲:一期:表面在光线下泛着略偏金绿色的彩虹般的色彩。它能覆盖大部分的身体,包括腹沟、大腿、膝盖、胫部、胸膛、肩膀还有前臂等;头盔带有一个电源组,但比任何标准的陆战队头盔电池组都显得轻巧。而盔甲里则衬着粗糙的黑色金属。
外壳由高强度的复合材料制成,里面加入了一种能够抵消能量武器攻击力量的材料。每一套战斗服装都有一层能保持温度的凝胶层,其密度能够灵敏地发生变化。紧贴着穿着者的是一层湿度吸收服,上面的生理调节器能够不停地调节温度,另外,穿着者的神经系统相联接的微电脑。内部有一种新型液态活性金属。这是一种不定形、不定积和可增加强度的金属。,能够让穿着者力量加倍,将反应速度提高到普通人的五倍。
二期:盔甲层略厚一点儿,而黑色内衬上的结构也更为复杂。核动力背包比一期大上一半,关节处布满了明亮发光的细小槽口。成功复制并改进了豺狼人用的能量盾发生器。
装甲的反馈电路和内衬生化衣之间有一个新的夹层,是备用的记忆处理器超导层。盔甲可携带入侵型人工智能。雷神锤盔甲系统几乎拥有和舰载人工智能系统相同的能力。入侵型人工智能可以帮你与盔甲协调,并在战斗中为你提供战术和战略情报。并改善穿着者和盔甲之间的协同问题
;****************************************************
;变量定义
;****************************************************
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
带注释,你可以参考一下!
免责声明:本平台仅供信息发布交流之途,请谨慎判断信息真伪。如遇虚假诈骗信息,请立即举报
举报