楼主:
ruemann (路人甲)
2013-09-05 20:01:19※ 引述《qeagle ()》之铭言:
: 请教一个问题..
: 若我想写一个输出时序,依次由不同脚位送出
: 是否程式一定要重复copy,换成不同脚位
: 还是有办法写成副函式去呼叫
: 我的问题点是因为脚位好像无法定义成变量
: 还是用指标或其它高阶方法可以达成??
for example
假定要输出P0的某个bit,sign则代表要输出的讯号(1,0)
例如out(1,0)就由P0.1输出0
void out(unsigned char bitn, bit sign)
{
if ( 0 == sign )
P0 &= ~(1<<bitn);
else
P0 |= (1<<bitn);
}
作者: ksmrt0123 (ksmrt) 2013-09-06 01:30:00
(1<<bitn)需要在run time才能算, 比较花时间一般是用bit_mask的方法, #define bit0 0x01#define bit01 0x02#define bit2 0x04 (以下类推)就不用再shift了. (bit01为bit1之误)要loop每个bit就 for(i=bit0; i; i<<=1) {...} 即可