作者beminaru (赏你个痛快)
站内Electronics
标题Re: [问题] 89s52的一点小问题
时间Mon Mar 10 07:08:12 2008
下面是我的程式
我做的练习是霹雳灯的试验
用kile c内建的软体检正可以成功的模拟出 输出的功能
但是 一旦我把他烧录进去89s52晶片中
实际的以电路去执行 他就会一直只有最右边的一颗LED恒亮
但是我把for回圈删掉後
一行一行的输入 我想要的霹雳灯亮的样子 例如 LED = ff;LED = fe; LED = fd;
在烧入进晶片
电路就成功了
所以应该不是电路的问题吧??
想请教各位 是否我哪边有可能错误 我用的版本是Keil uVision2
/* ch03_3.c - 霹雳灯实验程式 */
//==宣告区================================================================
#include <reg51.h> // 定义8051暂存器之标头档,P2-17~19
#define LED P2 // 定义LED接至Port 2
void delay(int); // 宣告延迟函数
//==主程式================================================================
main() // 主程式开始
{ unsigned char i ; // 宣告无号数字元变数i(占1Bytes)
LED=0xfe; // 初值=1111 1110,只有最右1灯亮
while(1) // 无穷回圈,程式一直跑
{ for(i=0;i<7;i++) // 左移7次
{ delay(100); // 延迟100*5m=0.5s
LED=(LED<<1)|0x01; // 左移1位,并设定最低位元为1
} // 左移结束,只有最左1灯亮
for(i=0;i<7;i++) // 右移7次
{ delay(100); // 延迟100*5m=0.5s
LED=(LED>>1)|0x80; // 右移1位,并设定最高位元为1
} // 结束右移,只有最右1灯亮
} // while回圈结束
} // 主程式结束
//==副程式================================================================
/* 延迟函数,延迟约x*5ms */
void delay(int x) // 延迟函数开始
{ int i,j; // 宣告整数变数i,j
for (i=0;i<x;i++) // 计数x次,延迟x*5ms
for (j=1;j<=600;j++); // 计数600次,延迟5ms
} // 延迟函数结束
※ 引述《beminaru (赏你个痛快)》之铭言:
: 想请问
: 我使用的是Keil uVision2并且以c语言方式进行撰写
: 但是有些程式组译完後烧进去晶片,
: 以实际电路来看结果却没办法完成我要的动作
: (但以Keil uVision2内的软体模拟来看我的输出,输出的方式仍为我想要达成的
: 方式在进行,所以程式应该没有错)
: 後来我改用简易的写法去组译
: (一行一行动作的写舍弃for回圈)
: 载入晶片後,就可以动作了
: 是否是因为我的程式Keil uVision2版本问题?
: 我使用的晶片是89s52
: 请指教谢谢
--
静静的等人追的话顶多只能有两三个选择
但是主动出击去追人的话你的选择将会是无限喔~共勉之
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.248.250.16
1F:推 mosquito520:LED=(LED<<1)|0x01; ←这逻辑怪怪的 03/10 12:54
2F:→ beminaru:请教一下该怎麽写好 03/10 22:32
3F:推 mosquito520:LED = LED<<1;//这样就好了...为什麽要做or运算? 03/10 23:43
4F:→ beminaru:让最低位元恒保持高电位的状态 03/10 23:54
5F:推 mosquito520:我电脑没装keilC...所以我没办法查help翻指令... 03/11 01:49
6F:→ mosquito520:也没办法直接跑来测看看...以下纯粹是推论... 03/11 01:49
7F:→ mosquito520:你要不要试看看把这行拆成两行来写... 03/11 01:49
8F:→ mosquito520:LED = LED << 1; 03/11 01:50
9F:→ mosquito520:LED = LED || 0x01; 03/11 01:50
10F:→ mosquito520:实际去debug看看LED的变化到底是不是你要的... 03/11 01:50
11F:→ mosquito520:另外...|跟||的意义不同...﹝如果我没记错的话﹞ 03/11 01:51