/***************************************************************************
*
* AT89C51 流水灯程序
* 外部晶振频率12MHz
* 作者:FAN
* 创建日期:2013.12.17
*
****************************************************************************/
#include <reg51.h>
#define LED P0
#define TIME 5000
/* 函数定义 */
void delay_ms(unsigned int ms); //毫秒延时函数
void led_se (void); //LED循环流动点亮函数
void rcol(void); //循环移位函数
/* 主函数 */
void main ()
{
LED = 0x80;
while (1)
{
led_se();
}
}
/* LED从左往右循环流动 */
void led_se (void)
{
delay_ms(TIME); //延时
rcol();
}
/* 循环移位函数 */
void rcol (void)
{
//循环移位,嵌入汇编
#pragma asm
MOV A, LED
CLR C
RRC A
MOV LED, A
#pragma endasm
}
/* 毫秒延时函数 */
void delay_ms(unsigned int ms)
{
unsigned char i;
while(ms--)
{
for(i=0; i<120; i++);
}
}
KEIL C51编译时提示
#pragma asm
#pragma endasm
这两条伪指令出错,这个参照书标准嵌入汇编的格式,不知道为什么会出错,我是新手,请高手指点
你可以直接复制到你的KEIL C51试试,会不会提示这个两错误, 不知道是不是,我电脑编译问题
也试过不用汇编,全C写的,,调试时,P0端口永远输出都是0x00,AT89C51,开始我想,是不是端口,要初始化配置,我查看过它的数据手册,它的端口好像不要初始化配置啊。
请高手指点,谢谢!
|