汇编语言转换成C51语言的程序,为节省大家时间,汇编和C51都给出了,帮忙看看

来源:百度知道 编辑:UC知道 时间:2024/05/28 07:41:39
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN:MOV SCON ,#00H
MOV A,#01H
CLR P1.0
START:MOV SBUF ,A
LOOP: JNB TI,LOOP
SETB P1.0
ACALL DELAY
CLR TI
RL A
CLR P1.0
SJMP START
DELAY:MOV R7,#05H
LOOP2:MOV R6,#0FFH
LOOP1:DJNZ R6,LOOP1
DJNZ R7,LOOP2
RET
END
书上的C51程序:
#include"reg51.h"
sbit p1_0=P1^0;
void main()
{
unsigned char i,j;
SCON=0x00;
j=0x01;
for(; ;)
{
p1_0=0;
SBUF=j;
while(!TI) { ; }
p1_0=1;TI=0;
for(i=0;i<+254;i++) { ; }
j=j*2;
if(j==0x00) j=0x01;
}
}
有些不明白,第一个for有什么用?第二个for语句感觉不应该这样写?还有while和for后的大括号放着有什么用?
i<=254,打=号时,按住了shift

第一个for(;;)相当于while(1)表示它后面一对花括号的语句无限循环执行下去
后面的while和for可以这样写while(!TI);
for(i=0;i<+254;i++);大括号里是空语句什么也不执行,就是等待,如果TI一直为0就一直执行while(!TI)直到TI为1了 !TI为假,则退出while执行下面的语句,for(i=0;i<254;i++);那个+号没用吧 执行for循环254次退出是个间隔的延时函数