推 flg:多謝,我會去嘗試看看,再次感謝幫忙^^ 08/03 20:15
※ 引述《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)