ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:362.98KB ,
资源ID:16897287      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16897287.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(PIC小结文档格式.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

PIC小结文档格式.docx

1、2、 准备连接线和power supply 连接,注意红+、黑-, 注意连线的正确性,看pcb的j12. 编写程序1、 设置引脚方向寄存器(从电路图看到是RD8、RD9、RD10、RD11),查看数据手册,找到TRISD:决定端口的方向,0输出,1输入PORTD:当方向为输入时,存放端口的值LATD:数据锁存器ODCD:漏极开路控制寄存器2、 设置锁存器#includeintmain(void)_TRISD8 =0;/设置引脚方向:0 输出;1 输入_TRISD9 =_TRISD10_TRISD11 =_LATD8 = 0;/设置锁存器的值,低电平(由前面得知)_LATD9 = 0;_LATD

2、10 = 0;_LATD11 = 0;while(1)return3、 编译设置好项目的输出路径、当前路径、头文件路径、库文件路径。编译,连接烧写1、 连接ICD和电脑,PIC板2、 注意ICD上小白色的箭头指向板子上带有小突起的引脚,3、 加电,烧写4、 断电,断开ICD和PIC板,加电,看是否点亮检查uart电路的连通性由图知调试口的1接发送、2接地、3接接收口。由图知j1的下边的为第一脚,1接u18、3接u17。测量u18连接的三个TXD和1;u17和3; 2和gnd的连通性。 注意,测量连通性时,注意不要和其他线路短路,以免烧坏板子。编写串口发送程序1、 串口初始化设置BRGx寄存器为

3、25由程序配置字知道选用主振荡器+4xPLL做为时钟源。OSC1做为输入、OSC2做为输出此时波特率=8*4/2M/(16*(25+1)=38461约为38400初始化uart的状态和控制寄存器、模式寄存器。2、 编写中断处理程序如何声明ISR以及怎样使用正确的矢量地址初始化IVT,将取决于编程语言(即 C 语言或汇编语言)和用于开发此应用程序的语言开发工具包。查看链接描述文件,我们可以看到中断向量表段。SECTIONS/* Interrupt Vector Table*/.ivt _IVT_BASE : 找到预定的uart收发中断名 LONG( DEFINED(_U1RXInterrupt)

4、 ? ABSOLUTE(_U1RXInterrupt) : ABSOLUTE(_DefaultInterrupt); LONG( DEFINED(_U1TXInterrupt) ? ABSOLUTE(_U1TXInterrupt) : 我们看到中断名为_U1RXInterrupt和_U1TXInterrupt为串口1的收发中断函数名,我们知道c语言中编译器处理后会自动在函数名前加一个下划线,我们为中断处理函数命名_U1RXInterrupt和_U1TXInterrupt.。 查看数据手册,我看中断向量表存放在固定的地址。IVT 位于程序存储器中,起始单元地址是 000004h。 IVT 包含

5、126 个矢量,这些矢量由 8 个不可屏蔽的陷阱向量和最多118 个中断源组成。 一般来说,每个中断源都有自己的中断矢量。 每个中断矢量都包含一个 24 位宽的地址。 每个中断矢量单元的存放值是其对应的中断服务程序(ISR)的起始地址。编译器会把预定的中断入口函数地址放在与中断矢量号对应的地址单元中。当触发中断时,系统会从中断矢量号查找对应的中断服务程序,从而运行中断服务程序。3、 编写串口收发函数由于涉及到全局变量,又涉及到中断,所以在对临界资源访问时要记得开关中断。4、 启动串口设置接收使能开始接收、开中断、设置发送使能开始发送5、 发送数据判断发送数据状态注意发送是时可能会忙标志位置位,

6、在while的发送中点亮led后显示灰暗,用万用表测量亮的led的压降,发现压降和前面的不一样,原因:因为数据位为忙时没有点亮led,这样不停的循环给led加电压,整个过程中电压不稳定,故led的压降偏向于占用时钟周期多的那个电压,但低于那个电压,所以会亮但没前面的亮。连接PIC板和电脑的rs232口1、 确认连接顺序,由前面知道j1的1接发送、2接地、3接接收口2、 找到rs232的接口顺序1. 载波检测2. 接收数据3. 发送数据4. 数据终端准备好5. gnd6. 通讯终端准备好7. 请求发8. 允许发9. 响铃指示器3、 接rs232的2、3、5口和j1的3、1、2口4、 注意串口线是

7、交叉线测试1、 将程序烧写到PIC板中2、 连接好连线3、 设置超级终端,选择com14、 加电,看是否收到数据5、 如没有收到数据检查前面各项串口线是否连接正确、电路是否短路、板子上是否有异物、程序上有没有错误等。6、 直到正确为止串口接收程序 int uart_recv(unsigned char *pData) _U1RXIE = 0; int i; int count = 0; count = Rcv_Count; for(i=0;iRcv_Count;i+) pDatai = Rcv_Bufi; /取出串口接收到的数据,以做处理 Rcv_Count = 0; _U1RXIE = 1;

8、 return count;遇到的问题:1、 接收没反应怀疑接收函数没有调用到,程序处于不断重启状态。在while里面添加点亮led灯语句,发现while执行正常。怀疑没有进入接收中断处理函数,使用debug模式。debug模式进不去。1、 线路没有问题2、 查看pcb图我们看到是芯片的26和27引脚。查看数据手册我们看到26和27对应于PGC2和PGD2。查看闪存配置字。_CONFIG1( JTAGEN_OFF /JTAG port disabled & GCP_OFF /Code Protect disable GWRP_OFF /Writes to program memory are

9、disabled COE_OFF /Clip-on Emulation mode FWDTEN_OFF /Watchdog Timer is disabled ICS_PGx1 /EMUC/EMUD share PGC1/PGD1 )程序被配置为PGC1和PGD1,故进入不了debug模式,修改之,ok 在接收中断中加入断电,在调试模式下运行,发现能够进入中断,说明收到数据了。 怀疑接收缓冲区有问题,仔细查看没有问题。 怀疑接收函数有问题,仔细查看发现,接收函数中引用了全局变量,而全局变量容易被其他地方改变,在函数中加入开关中断操作,ok2、 发送乱序仔细查看发送中断函数,发现在发送函数中,只进行了开中断操作,而其他地方也找不到关中断操作,因为发送函数每次有一个字符就触发一次中断,所以当发送多个字符时,由于时序上的问题就会出现发送的顺序的不对,在发送前先关中断,发送后开中断,问题解决,ok总结:1、 遇到问题,先怀疑自己写的程序是否有问题。2、 检查环境配置是否有问题3、 检查线路连接问题4、 检查程序逻辑问题5、 用debug调试6、 学着举一反三

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1