我想写个程序,实现I/O口接收外部信号,通过RS232串口在计算机上显示。
现在主程序中令sendChar=0x55;则串口助手可以接收到0x55,然后我改成
PORTB = 0xFF;
DDRB = 0x00;
sendChar=PINB;
将高低电平信号接在PORTB上,却不能在串口上得到数据。
请问是程序问题还是硬件方面存在问题?
你好,是这样的,如果直接在程序中定义要发送的数据,串口是可以接受的,测试过是没问题的。现在我想要单片机通过I/O口接受外部数据,即外部通过8位数据线向PORTB发送高低电平,令PORTB处于接收状态,将接受的数据发送到串口上,这一步存在问题。
追答那么PORTB与外部器件连接了吗?计算机是什么都没显示,还是显示的内容不正确?单片机串口的程序是一直在等待PORTB状态的改变再发送数据,还是一直在扫描PORTB并一直在发送数据,抑或是串口和PORTB各奔东西。你就那3行程序,让人有些摸不着头脑。
追问你好!现在PORTB已经可以接收外部信号了,我是在sendChar=PINB;前面加上了一个NOP指令起到同步作用。虽然你的答案没有实质性的帮助,但是提醒我发现了自己的错误所在,所以分数给你了!
追答不好意思,无功受禄了。你说的情况数据手册确实有介绍,当IO口输入输出状态改变时有一个延时。
本回答被提问者采纳你好,是这样的,如果直接在程序中定义要发送的数据,串口是可以接受的,测试过是没问题的。现在我想要单片机通过I/O口接受外部数据,即外部通过8位数据线向PORTB发送高低电平,令PORTB处于接收状态,将接受的数据发送到串口上,这一步存在问题。
追答等等,我好像知道你的理解上有些错了,在串口通讯的过程中,单片机接收外部数据是放在单片机内部一个寄存器里面的(单片机内部有一个固定的寄存器是用于接收好发送数据的),不是按你所说的吧接收到的数据放在PORTB里面,令PORTB处于接收状态。
另外,接收数据和发送数据类似,一接收到数据就自动放在单片机内部!(你编写过发送数据的程序也应该知道,发送数据直接把数据放在UDR里面,单片机就会自动执行发送命令)
接收到数据和发送数据一样,可采用查询方式或者中断方式。
你好!现在PORTB已经可以接收外部信号了,我是在sendChar=PINB;前面加上了一个NOP指令起到同步作用。
我学mega16定时器,出现问题?就是内部时钟和外部时钟的问题!还有就是内...
再说定时器:单片机的定时器可选择内部时钟源和外部时钟源,其中内部时钟源指的是系统当前工作的时钟源;外部时钟源则是从I\/O口输入的方波信号,外部时钟源的采集又分为上升沿和下降沿,一般用这种方式记脉冲数。
电子信息工程毕业论文
1. 用单片机进行温度的控制及LCD显示系统的设计 2. 基于MultiSim 8的高频电路仿真技术 3. 简易数字电压表的设计 4. 虚拟信号发生器设计及远程实现 5. 智能物业管理器的设计 6. 信号高精度测频方法设计 7. 三相电机的保护控制系统的分析与研究 8. 温度监控系统设计 9. 数字式温度计的设计 10. 全自动节水灌溉...
...采用一个8×8LED点阵屏,AVRmega16L单片机引脚数目足够,
uchar i,bb,t;DDRB=0xff; \/\/输出口 DDRD=0xff; \/\/输出口 while(1){ for(i=0;i<8;i++){ PORTB=0x00; \/\/消隐 PORTD=0xff; \/\/消隐 PORTB=table1[i+t]; \/\/高低平有效 PORTD=table[i]; \/\/\/低电平扫描 time(1);} bb++;if(bb==200){ bb=0;t++;if(t==...
熟悉单片机 芯片的高手请进啊!!!
另有一个8位定时\/计数器(具有8位预分频)、13个双向I\/O端口。PIC16C71单片机有35条单字节指令,除跳转指令外,其余指令均为单周期指令,指令周期为200Ns,时钟频率达2OMHz,片内有存储器(EPEOM、OPTROM、QTPROM) 1024×14位,通用寄存器(RAM)36×8位),15个特殊功能寄存器,8级硬件堆栈、四个中...
http:\/\/zhidao.baidu.com\/question\/144686046.html?fr=qrl&cid=93&i...
倒是网上很多关于点阵屏的程序,首先要电路匹配才行,不过你要仔细看懂,程序是可以移植的。点阵的电路图在以前电脑上,给你一个图片,貌似不太清楚,不过可以看的。要是用的多的话,端口级联即可,如果过多,但用595是不行的,驱动能力有限,需要加驱动电路,一般的中功率三极管即可实现驱动。如图 ...