这个其实很简单,我告诉你几个方法你自已去转吧,这样你也可以学习一下。
P0 DATA 80H,P1 DATA 90H 这两条是系统内部固定好的,在C51里面,直接用#include
K1 EQU P0.0像这样的指令是定义用,表示K1这个名字定义为单机的P0.0这样在程序中就可以用K1来代用了,在C51里面,用 #define k1 P0.0
MOV SP, #50H这在C里,用等于号,SP=50(二进制数)
JNB K2, MFZ2 这是如果不等于0跳转指令,在C语言里,可用IF(K2!=0)MFZ22;
ACALL DELAY 这是调用DELAY程序,在C语言里直接用DELAY();
JMP是跳转指令,在C里用go to指令代替
INC是加1指令,在C里用,R0=R0+1
DJNZ R5, DEL1可用IF((R5-1)!=0)go to DEL1;
像这样的程序用C就方便多了
MOV R0, #05
MFZ1: MOV A,R0
MOV DPTR, #TABLE
MOVC A, @A+DPTR
用C是:
R=5;A=DPTR[R];就行了则A就等于:0F7H了,对应下面的数据表第六个。
像下面的数据表:
TABLE: DB 0FCH,0F9H,0F3H,0F6H
DB 00H
DB 0F7H,0F3H,0FBH,09H
DB 0FDH,0FCH,0FEH,0F6H
DB 00H
写成C是:TABLE[14]{0FCH,0F9H,0F3H,0F6H,00H,0F7H,0F3H,0FBH,09H,0FDH,0FCH,0FEH,0F6H,00H
}
像下面这个子程序:
DELAY: MOV R5, #40
DEL1: MOV R6, #248
DJNZ R6, $
DJNZ R5, DEL1
RET
写成C的话是:
DELAY()
{将程序内容写在这里}
还有一些指令自已去理解了,要执行判断,就用IF(条件){要执行的内容};
记住C是分大小写的,标点符号漏了,程序就大不一样。。
C变汇编简单得很,
汇编变C 是可以,
但我认为 这是不符合逻辑的
你要知道 汇编变C 是要熟悉汇编和C语言的人才能做的,那些人是高手,他们没那么有空帮你改
你写个功能详细要求 然后求C51程序, 那么帮你的人多的是