这个单片机汇编换成C语言应怎么写?

来源:百度知道 编辑:UC知道 时间:2024/06/17 19:50:08
这个单片机汇编换成C语言应怎么写?是让灯闪的?
ORG 0
LJMP LOOP
ORG 30H

LOOP: SETB P1.0
LCALL DELAY
CLR P1.0
LCALL DELAY
AJMP LOOP
DELAY: MOV R7,#250
D1: MOV R6,#250
D2: DJNZ R6,D2
DJNZ R7,D1

RET

END
谢谢 jiemnij.
不过出现以下错误
p1和led应如何定义?
'p1' :undefined identifier
'led';undefined identifier
=====
哦,要加上
#include <AT89X51.H>
#include <stdio.h>

=========
sbit led=P1^0
是让led指向p1.0吧?如果指向p1.2是sbit led=P1^2,我试过了.
但如果要指向所有P1呢?即P1.0-P1.7呢?汇编是 mov p1 #ffh,C语言呢?

#include<reg52.h>//52系列单片机头文件
#define P1 ledall //此处没用到
sbit led1=P1^0;
void delay(unsigned int t)
{
while(t--);
}
void main()
{
led1=0;
while(1)
{
led1=~led1//取反
delay(1000);//括号中数加大则闪烁变慢
}
/*若要控制所有的 把上面6行去掉用下面的*/
/*
P1=0xaa;//隔一个亮
while(1)
{
P1=~P1;//~按位取反,间隔闪烁
delay(1000);
}
*/
}
若要做流水灯,加个#include<intrins.h>关于循环等 的头文件
_crol_(P1,1);//P1左循环1位,配合延时和for循环语句循环8次可实现流水灯
_cror_(P1,1);//此句是右循环1位的

void delay(unsigned int tt)
{
while(--tt);
}
sbit led=P1^0

void main()
{
while(1) {
led=1;
delay(100); //如果这里100不够..就加大吧
led =0 ;
delay(100);
}
}

要指向所有P1就用define定义啊,#define aa P1,那么aa就指向这个P1了,你写的mov p1 #ffh用C就是aa=0xff,这是c语言的基础知识啊

如果你使用KEIL编程的推荐你看一看KEIL编程手册。书店有卖,很实用。