Discussion:
[問題] 請問有關於使用8051來寫開關程式問題
(时间太久无法回复)
廢人君
2006-07-30 22:51:49 UTC
Permalink
請問一下,我目前打算使用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個開關的動作,該怎麼修改上述程式來達成我需要的目的呢?

因為本人非就讀相關科系,所以看的真的是一頭霧水,相關書籍上也似乎找不到相近的

範例,因此懇請各位幫幫忙,非常感謝!!

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.155.125
Trina
2006-07-31 00:21:47 UTC
Permalink
�� �ޭz�mflg (�o�H�g)�n���ʨ��G
: �аݤ@�U�A�ڥثe�����ϥ�8051�ӳ]�p�U�C�}��
: �q����: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

�藍�_���I�p�L�s�PVpm ��9�ӭn�Ҽ{���a���C...
�٬O��Vpm�O�~�����J���H�M��8051����8��Phi?�}���H

: �аݭn�F���P�B����8�Ӷ}��ʧ@�A�ӫ����ק��W�z�{���ӹF���ڻݭn���ت��

�]�����ӽT�w���D�A�ҥH�n�ݤ@�U�C
�{�����O������~.~"....

�����A���@�w�n��MCU�X....�O�o�S���AWXXX�������K�y��@@"...
�ڥιLW77E532....���@��ARM7�ٶQ...XD

--
http://www.wretch.cc/album/show.php?i=genovia&b=25&f=1808827553&p=0

--
�� �o�H��: ���������~�{(ptt.cc)
�� From: 220.133.64.81
�� flg:���p�A�ڧѰO�Ҽ{�i�h�F�A�`�@�O�n����9�ӳ����S��  07/31 16:20
賣頻寬控制分享器
2006-07-31 09:32:12 UTC
Permalink
�� �ޭz�mgenovia (Trina)�n���ʨ��G
: �� �ޭz�mflg (�o�H�g)�n���ʨ��G
: : �аݤ@�U�A�ڥثe�����ϥ�8051�ӳ]�p�U�C�}��
: : �q����: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
: �藍�_���I�p�L�s�PVpm ��9�ӭn�Ҽ{���a���C...
: �٬O��Vpm�O�~�����J���H�M��8051����8��Phi?�}���H
: : �аݭn�F���P�B����8�Ӷ}��ʧ@�A�ӫ����ק��W�z�{���ӹF���ڻݭn���ت��
: �]�����ӽT�w���D�A�ҥH�n�ݤ@�U�C
: �{�����O������~.~"....
: �����A���@�w�n��MCU�X....�O�o�S���AWXXX�������K�y��@@"...
: �ڥιLW77E532....���@��ARM7�ٶQ...XD
�L����ɶ��n�p��us...
�p�G����mcu���ܦ����������n���ѨM���׶�?

�p�GWXXX�����ܶQ����...
�γ\�i�H����89S51...�o���t�ץi�H�Ԩ�33MHZ...
�u�O�ާ@�bns�i���n�b���դ@�U...
�p�G���X�N�O�ܳ��¹��ϤW�o�˪���...
�γ\�i�H�a...

--
�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b�b
�� �� �p �X �j ��
(�z�u/�q��/�޲z/�޳N/�Ȯa)�|�� �ۥͤ�
National United University
�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w�w
���� http://www.nuu.edu.tw BBS telnet://uun.twbbs.org

--
�� �o�H��: ���������~�{(ptt.cc)
�� From: 220.133.140.180
Trina
2006-07-31 20:36:15 UTC
Permalink
※ 引述《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)
菊花普洱茶
2006-08-03 01:15:01 UTC
Permalink
delay的副程式部分用指令延遲可能不好...因為原PO要求的間隔時間很短

應該用TIMER的中斷比較好吧?

//TIMER0的設定

TMOD=0x02;
TH0=0x9C;
TL0=0x9C;

EA=1;
ET0=1;
TR0=1;

//在此中斷的間隔時間是 100/(f/12) s

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.23.223.15

Loading...