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

lhybird 2009-03-23 01:49:22
这个单片机汇编换成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
========================

SETB P1.0 换成 mov p1 #0FFH和CLR P1.0换成 mov p1 #00H ,C语言怎么写?
有过其它语言编程经验的初学者,想从简单的例程写起.我现在用keil.
...全文
95 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
小赌移情 2009-03-25
  • 打赏
  • 举报
回复
1). P1^0只能當右值,不能當左值.它是一個表達式, 意思是P1^0x00. sbit led = P1^0是定義位特殊寄存器變量led為P1^0.

2). P1_0是沒有定義的一個符號,除非你定義, 否則不能用.

另:P1是在頭文件中定義了的符號, 對應P1在特殊寄存器中的直接尋址的地址.

lhybird 2009-03-24
  • 打赏
  • 举报
回复
P1^0和P1_0有什么别区?
我已经实现了
...
sbit led=P1^0;
...
led=1;
...
led=0;

但用另一种方法时P1^0不能直接赋值,如不能 P1^0 = 1
要用P1_0=1.
而且上面那句 sbit,也不能写成 sbit led=P1_0

为什么?
gzvigo 2009-03-23
  • 打赏
  • 举报
回复
#include <reg51.h>

//delay的时间自己改到合适
void delay(int delay)
{
int i,j;
for(int i = 0; i < delay; i++)
for (int j = 0; j < 125; j++)
;
}

void main()
{
while(1)
{
P1^0 = 1;
delay();
P1^0=0;
delay();
}
}

21,500

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧