Re: [問題] 同樣輸出pulse想從不同腳位送出..

作者: WolfLord (呆呆小狼￾ ￾ N￾ ￾ )   2013-09-08 20:43:49
※ 引述《ruemann (路人甲)》之銘言:
: 標題: Re: [問題] 同樣輸出pulse想從不同腳位送出..
: ※ 引述《qeagle ()》之銘言:
: : 請教一個問題..
: : 若我想寫一個輸出時序,依次由不同腳位送出
: → ruemann:總是要舉一反三吧 方法很多的… 09/07 19:32
: → WolfLord:這種事用MARCO不就好了? 09/07 21:56
: → qeagle:用run time好像要shift才能算,用macro好像不行..?? 09/08 20:03
: 推 qeagle:我在想是否要用指標指到port位址,再用一個可變的mask非巨集 09/08 20:06
那我就媽給你看,而且還可以FREEBIT 不用同一個PORT BIT
//Kind 1 : Virtual Port
#define _syncbit(a) a&1?PO1=1:PO1=0;a&2?PO2=1:PO2=0;a&4?PO3=1:PO3=0;a&8?PO4=1:\
PO4=0;a&16?PO5=1:PO5=0;a&32?PO6=1:PO6=0;a&64?PO7=1:PO7=0;a&128?PO8=1:PO8=0
#define _clrall() PO1=0;PO2=0;PO3=0;PO4=0;PO5=0;PO6=0;PO7=0;PO8=0
#define _setall() PO1=1;PO2=1;PO3=1;PO4=1;PO5=1;PO6=1;PO7=1;PO8=1
sbit PO1=P3^7
sbit PO2=P2^1
sbit PO3=P3^4
sbit PO4=P2^2
sbit PO5=P1^1
sbit PO6=P2^7
sbit PO7=P2^4
sbit PO8=P2^5
void main(void){
unsigned char i,b;
do{
_clrall();
b=1;
for(i=0;i<8;i++){
_syncbit(b);
delay(...);
b<<=1;
}
_clrall();
b=0X80;
for(i=0;i<8;i++){
_syncbit(b);
delay(...);
b>>=1;
}
}
//Kind2 : Number to Port
#define _setbit(a) a==0?PO1=1:a==1?PO2=1:a==2?PO3=1:a==3?PO4=1:a==4?PO5=1:\
a==5?PO6=1:a==6?PO7=1:a==7?PO8=1
#define _clrbit(a) a==0?PO1=0:a==1?PO2=0:a==2?PO3=0:a==3?PO4=0:a==4?PO5=0:\
a==5?PO6=0:a==6?PO7=0:==7?PO8=0
#define _clrall() PO1=0;PO2=0;PO3=0;PO4=0;PO5=0;PO6=0;PO7=0;PO8=0
#define _setall() PO1=1;PO2=1;PO3=1;PO4=1;PO5=1;PO6=1;PO7=1;PO8=1
sbit PO1=P3^7
sbit PO2=P2^1
sbit PO3=P3^4
sbit PO4=P2^2
sbit PO5=P1^1
sbit PO6=P2^7
sbit PO7=P2^4
sbit PO8=P2^5
void main(void){
unsigned char i;
do{
_clrall();
for(i=0;i<8;i++){
_clrall();
_setbit(i);
delay(...);
}
_clrall();
for(i=7;i<240;i
作者: Schumacker   2013-09-08 21:25:00
好醜的媽
作者: wasidada (dada)   2013-09-08 22:21:00
作者: WolfLord (呆呆小狼￾ ￾ N￾ ￾ )   2013-09-08 22:30:00
好用就好,姿勢丑不打緊,有爽到就好:P
作者: qeagle   2013-09-08 22:45:00
寫的不錯,但以這個寫法,沒被指名到的腳位,若原來是HIGH會被蓋掉?不知道我沒有誤讀....
作者: WolfLord (呆呆小狼￾ ￾ N￾ ￾ )   2013-09-08 22:51:00
大部分的SOC(包含8051)都可以單PORT單BIT只定數值這裡的NAME_PORT都是用SBIT指定的IO PORT
作者: qeagle   2013-09-09 00:08:00
我想問的是,若己經寫了P0-P7,若只指定P3,則其它幾根PIN腳若是NORMAL HIGH,則用此巨集沒用到的腳原來的HIGH會變LOW好像第一種寫法會,第二種寫法,?後面好像有巢狀...不確定
作者: kikiqqp (喵食罐頭)   2013-09-09 10:00:00
寫C語言的人都會覺得寫單晶片C的code寫的很醜但卻不知道單晶片必須這樣寫才能壓榨出最好的效能所以不要拿電腦上C語言來要求不要這樣寫
作者: ksmrt0123 (ksmrt)   2013-09-10 00:18:00
我很疑惑怎樣的code是'醜'但效能好的? 請問有例子嗎?

Links booklink

Contact Us: admin [ a t ] ucptt.com