单片机我想复用,应该怎么解决啊??就是既做输入又做输出,输出连数码管,输入脉冲计数
答案:4 悬赏:60
解决时间 2021-01-27 14:01
- 提问者网友:欺烟
- 2021-01-26 19:38
单片机我想复用,应该怎么解决啊??就是既做输入又做输出,输出连数码管,输入脉冲计数
最佳答案
- 二级知识专家网友:行雁书
- 2021-01-26 20:28
把计数的接到外部中断,用下降沿中断来计数很方便,来一个中断,计数值(要设为全局变量)加1,同时在中断服务程序中设一个标志变量(也用全局变量),有中断时把它设为1。在main函数中while循环里面,对标志变量进行判断,如果为真,则刷新计数值的显示(记得在此要把标志变量清0)。
volatile unsigned char flag=0;
volatile unsigned char count=0;
void intr0_isr(void) interrupt
{
flag=1;
count++;
}
void main()
{
//initialization here
while(1)
{
if(flag) { Display(count);//modified your display function here
flag=0;
}//end if
}//end while
}//end main追问计数我用程序来,我要的引脚比较多,我要接很多数码管,超过八个,所以要复用,我想又做输入又做输出,程序应该怎么定义?怎么锁存?我用同一个口,比如PO,我要计数,计数之后又在PO口点亮发光二级管……
万分感谢!!!追答IO口复用,关键的电路的设计,跟程序没有多大的关系。要实现复用,最方便的是加锁存器
volatile unsigned char flag=0;
volatile unsigned char count=0;
void intr0_isr(void) interrupt
{
flag=1;
count++;
}
void main()
{
//initialization here
while(1)
{
if(flag) { Display(count);//modified your display function here
flag=0;
}//end if
}//end while
}//end main追问计数我用程序来,我要的引脚比较多,我要接很多数码管,超过八个,所以要复用,我想又做输入又做输出,程序应该怎么定义?怎么锁存?我用同一个口,比如PO,我要计数,计数之后又在PO口点亮发光二级管……
万分感谢!!!追答IO口复用,关键的电路的设计,跟程序没有多大的关系。要实现复用,最方便的是加锁存器
全部回答
- 1楼网友:十年萤火照君眠
- 2021-01-26 23:03
单片机的P1,P2,P3本来就既做输入又做输出,其实你可以加一个锁存器来锁存的输入,然后再做输出部分,希望对你有帮助追问计数我用程序来,我要的引脚比较多,我要接很多数码管,超过八个,所以要复用,我想又做输入又做输出,程序应该怎么定义?怎么锁存?我用同一个口,比如PO,我要计数,计数之后又在PO口点亮发光二级管……
万分感谢!!!追答这个很简单,我说过的,用一个锁存器就ok了,我建议你看郭天祥的那本书,上面有详细的介绍
万分感谢!!!追答这个很简单,我说过的,用一个锁存器就ok了,我建议你看郭天祥的那本书,上面有详细的介绍
- 2楼网友:渊鱼
- 2021-01-26 21:40
计数要用计数器吧,如果是一直持续的脉冲,这个引脚还想显示就不好做,没有别的引脚了?追问计数我用程序来,我要的引脚比较多,我要接很多数码管,超过八个,所以要复用,我想又做输入又做输出,程序应该怎么定义?怎么锁存?我用同一个口,比如PO,我要计数,计数之后又在PO口点亮发光二级管……
万分感谢!!!追答如果是一直持续的脉冲,那么这个脚就没有空闲干别的了,你要扩展的话可以考虑用74hc373芯片很简单的
万分感谢!!!追答如果是一直持续的脉冲,那么这个脚就没有空闲干别的了,你要扩展的话可以考虑用74hc373芯片很简单的
- 3楼网友:神鬼未生
- 2021-01-26 20:45
那就一部分IO接数码管,一部分IO接脉冲计数嘛,不够用吗,扩展IO喽
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯