永发信息网

求单片机 c语言 控制引脚

答案:4  悬赏:20  手机版
解决时间 2021-01-22 07:00
求单片机 c语言 控制引脚
最佳答案
ACC 是累加器啊,是会自动计数的,在C语言中还敢这么用?

需要另外定义一个变量!
void IOMOD(unsigned char 位置,unsigned char 值)
{
unsigned char i, var_P1;
var_P1 = P1;
for(i=8; i>0; i--)
{
if (i==位置) var_P1 = 值;
var_P1 = var_P1 >> 1;
}
P1 = var_P1;//这个是不是应该放到for循环里面?不知道要求所以只是提醒一下
}

按照你的要求,是改变P1.x端口对应x的输出值(友情提醒一下,这也是危险的。因为P1不是一个变量,读取P1是指P1外部电路的情况,如果外部电路为低电平,但是这时候P1对应位输出高电平的话就会有电流输出,当然如果加好电阻的就没事。)
void IOMOD(unsigned char 位置,unsigned char 值)
{
unsigned char i, var_P1;
if (值 == 1)
var_P1 = var_P1 | (1 << 位置); //对应位置1
else
var_P1 = var_P1 & ~(1 << 位置); //对应清0
P1 = var_P1;//重新输出即可

}追问P1 = var_P1;是在循环语句之外放着

目的是为改变P1的结果赋值给P1

谢谢提示增加一个过程变量,不知道ACC会自动累加
自己编的有错误,所以请教大虾。追答又修改了新的:
按照你的要求,只改变P1.x端口对应x的输出值0或1(友情提醒一下,这也是危险的。因为P1不是一个变量,读取P1是指P1外部电路的情况,如果外部电路为低电平,但是这时候P1对应位输出高电平的话就会有电流输出,当然如果加好电阻的就没事。)
void IOMOD(unsigned char 位置,unsigned char 值)
{
unsigned char i, var_P1;
if (值 == 1)
var_P1 = var_P1 | (1 << 位置); //对应位置1
else
var_P1 = var_P1 & ~(1 << 位置); //对应清0
P1 = var_P1;//重新输出即可
}追问首先谢谢
我的思路错了
虽然不懂 var_P1 = var_P1 | (1 << 位置); 的用法但你给了说明
改变输出赋值就是为了改变引脚状态,有做保护处理的。
正在修改测试,再次感谢。
没有问题了采纳,结束。追答如果希望修改P1.x(x范围0到7),那么用函数IOMOD(x, 值);就行(值是1或0)
全部回答
你这个函数,和传递过来得参数无关呀,这个函数得效果是把P1右移八位.
你是不是if忘记加{}了
void IOMOD(unsigned char 位置,unsigned char 值)
{ unsigned char i;
ACC = P1;
if (值 == 1)
ACC = ACC | (1 << 位置);
else
ACC= ACC & (0 << 位置);
P1 = ACC;
}
这是设置某一引脚值的方法,其中“值”只能为0或1, c语言没有直接对位赋值语句!追问谢谢
ACC是累加器,的确我的思路错了
建议你看看 Arthurzss 的回答
思路和你一样的
我在想,你这个
{if (i==位置) ACC0 = 值;
ACC = ACC >> 1;
}
P1 = ACC;
为嘛要这么写。是要移8位吗,为啥不>>8
ACC初始值是啥,结果是啥追问初学单片机C语言不久,实践编写能力较弱
不仅要位移,最主要的目的是改变引脚(P1二进制)状态
若有别的好办法请赐教:)追答你这个i的位置和 ACC值是不是不一定移八位。 遇到啥情况会不操作,或者停止?
p1是改完之后在输出,还是中间一直输出。
这个逻辑要弄清楚,否则你这里的数字就不一定对了。
ACC 一楼说的没错,不建议用寄存器名做变量名。
写法上来说没有大问题,移位来改变P1的方式很常用。感觉不是写法,而是思路问题吧。
另外ACC0
是啥?另外一个变量,没有ACC笔误吧追问忘做说明
sbit ACC0 = ACC^0;
sbit ACC7 = ACC^7;

不一定要移八位,是思路错了
Arthurzss 答的非常好
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
单选题下列各项中,所有字母都是元音字母的是
有什么好的办法解决河流污染问题
腾龙A16和B005选哪一个呢?打算选一个作为我
繁体字网名浅然一笑四字
羊瘟热怎么预防
当前竞争形势下,酒店应建立什么样的组织架构
网上卖的费落蒙香水真的可以吸引异性吗
单选题澳大利亚大陆所在的板块是A.亚欧板块B.
喷乳胶漆几天能干好
想做干眼项目的检查,在哪里做比较专业?
五笔输入法,为什么嘉字,可以用FKUK和FKUL两
拉斯科洞窟和阿尔塔米拉洞窟的区别
造父习御 给我翻译以下咯!
如何做紫米好吃
一到天冷时就流鼻涕怎么办
推荐资讯
颗麦大大是谁?
我妹中考以后没去录取的学校报道,学籍被退到
我和前妻离婚以有4o年了,现我死后前妻孩子能
暗黑2战网都瑞尔的怎么重复杀?
5.5×6.3-2.3x5.5简便算法
为什么果农将苹果储存在密封的地窖中
Henewly-discoveredstarwasnamed_____aChines
光波长是什么
比较有保障的项目投资是什么?
He is a foreigner and he is not like that
泰国num红吗
停车场(状元楼东)地址在哪,我要去那里办事,
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?