• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

贴两个小小的子程序,支持版主工作!

;**************************************************************
;8位格雷码转换成二进制码
;8位格雷码在ACC中,转换后一字节二进制码仍在ACC中
;占用R7,PSW
G2B8: MOV R7,#7
RL A
GB1: JNB ACC.0,GB2
CPL ACC.7
GB2: RL A
DJNZ R7,GB1
RET
;**************************************************************
;16位格雷码转换成二进制码
;16位格雷码高字节在R2中,低字节在R3中.转换结果仍在R2R3中
;占用:ACC,PSW,R7
G2B16: MOV R7,#15 ;计数器赋值
MOV A,R3 ;第一次左移一位
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
MOV A,R3
MOV ACC.0,C
MOV R3,A
G2B161: JNB ACC.0,G2B162 ;移出的一位异或尚未移出的最高位,结果在尚未移出
MOV A,R2 ;的最高位
CPL ACC.7
MOV R2,A
G2B162: MOV A,R3 ;左移一位
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
MOV A,R3
MOV ACC.0,C
MOV R3,A
DJNZ R7,G2B161 ;未完成则继续
RET
;**************************************************************
;8位二进制数(在ACC中)转换成格雷码,转换结果仍在ACC中
B2G8: MOV R7,#7
RLC A ;B1->CY
MOV ACC.0,C ;B1->ACC.0
BGLOP: JNB ACC.7,BG4
CPL C ;CY(Bi-1) XOR Bi->CY
BG4: RLC A ;CY->Gi,Bi->CY
DJNZ R7,BGLOP
RET
;**************************************************************
;16位二进制数转换成格雷码
;16位二进制码在R2R3中(R2高字节),转换结果仍在R2R3中
;占用:ACC,PSW,R7
B2G16: MOV R7,#15
MOV A,R2 ;B1->CY
MOV C,ACC.7
MOV A,R3
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
JNB ACC.7,BG161
CPL C ;CY(Bi-1) XOR Bi->CY
BG161: MOV A,R3
RLC A ;CY->Gi
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
JNB ACC.7,BG162
CPL C
BG162: DJNZ R7,BG161
RET
;**************************************************************
全部回复(6)
正序查看
倒序查看
2004-06-21 08:35
谢了,先顶一下!!!
0
回复
hzhaox
LV.1
3
2004-09-09 19:45
@一个好人
谢了,先顶一下!!!
ding
0
回复
2004-09-10 11:16
@hzhaox
ding
zai ding
0
回复
bessam
LV.4
5
2004-12-10 13:26
不错,顶
0
回复
2005-01-25 11:17
@bessam
不错,顶
請問,那些場合會用到這些程序.舉個例子好嗎?
0
回复
haoder
LV.1
7
2005-02-01 12:04
@xinhua.liu
請問,那些場合會用到這些程序.舉個例子好嗎?
格雷码还是用的比较多的,我知道电梯的数据传输中有很多是用格雷码的.
0
回复