作者genovia (Trina)
看板Electronics
标题Re: [问题] 请问有关於使用8051来写开关程式问题
时间Tue Aug 1 12:24:19 2006
※ 引述《flg (废人君)》之铭言:
: 请问一下,我目前打算使用8051来设计下列开关
: 电路图:http://www.wretch.cc/album/show.php?i=flg&b=4&f=1231617596&p=4
: 开关动作图:http://www.wretch.cc/album/show.php?i=flg&b=4&f=1231617593&p=1
: 目前有向别人请教,决定使用华邦的W78E516B外接40M HZ石英震荡器来达成,
: 但是程式方面有些问题,我目前有看到一个范例:
: #include "reg51.h"
: delay10ms(int);
: void main()
: {
: while(1)
: {
: char i = 0;
: P1 = i;
: delay10ms(10);
: P1 = ~i;
: delay10ms(10);
: }
: void delay10ms(int time)
: {
: int i,j;
: for (i=0;i<t;i++)
: for(j=0;j<120;j++)
: ;
: }
: 请问要达到同步控制8个开关的动作,该怎麽修改上述程式来达成我需要的目的呢?
: 因为本人非就读相关科系,所以看的真的是一头雾水,相关书籍上也似乎找不到相近的
: 范例,因此恳请各位帮帮忙,非常感谢!!
如果不把周边电路当成记忆体的话。
先定义几个要用的开关。假设接在Port1 0~7 还有 Port2 的 0
即Vpm接P2_0 其他的由图片往下分别对应P1_0~P1_7
#include "reg51.h" //这行看情况啦...
void delay(long);
int main()
{
//Initial Chip
//我记得W78有register要设定。会影响Clock...
//在这边先设定一下。(我没有Spec.可以看Spec.後加上)
//Initial Port
P1=0x10;
P2_0=0x01;
delay(n);//n是一个数字。
while(true)
{
//其他写法可以用旋转指令。
//我不确定这样一点点时间差会不会有影响。
//如果有影响要改变设计方法
//---res/oc---
P1=0x2f;
P2_0=0x01;
delay(n);
//
P1=0x1e;
delay(n);
//
P1=0x1c;
delay(n);
//
P1=0x18;
delay(n);
//---sense---
P2_0=0;
P1=0x90;
delay(m);//这边时间看起来m好像是n的四倍长??
//---feedb---
P1=0x10;
delay(m);
}
}
void delay(long T)
{
//这里面写的延迟与MCU设定与震荡器有关。
//T要算一下。
//形式大概是
long x;
for(x=0;x<T;x++)//T是一个要给定的数字。
;
}
--
http://www.wretch.cc/album/genovia
徵求专长机器视觉与听觉的朋友 ^.~
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.129.33.147
※ 编辑: genovia 来自: 140.129.33.147 (08/01 12:36)
1F:推 flg:多谢,我会去尝试看看,再次感谢帮忙^^ 08/03 20:15