這是 8051 硬件架構的一個基本限制:它無法間接尋址 SFR——包括端口。
不過你可以這樣用
- void setpin(uchar port_num, uchar bit_index )
- {
- switch( port_num)
- {
- case 1:
- P1 |= ( 1 << bit_index );
- case 2:
- P2 |= ( 1 << bit_index );
- case 3:
- P3 |= ( 1 << bit_index );
- /* case 4:
- P4 |= ( 1 << bit_index );
- case 5:
- P5 |= ( 1 << bit_index );*/
- }
- }
- void clrpin( uchar port_num, uchar bit_index )
- {
- switch (port_num)
- {
- case 1:
- P1 &= ~( 1 << bit_index );
- case 2:
- P2 &= ~( 1 << bit_index );
- case 3:
- P3 &= ~( 1 << bit_index );
- /* case 4:
- P4 &=~ ( 1 << bit_index );
- case 5:
- P5 &= ~( 1 << bit_index );*/
- }
- }
- void sd(uchar x , uchar n, uchar y) // 閃燈
- {
- setpin(n,y);
- delay_ms(x);
-
- clrpin(n,y);
- delay_ms(x);
- }
- sd(500, 3, 5);
復制代碼 |