- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PIC单片机C语言编程实例五
PAGE PAGE 163 第9章 PIC16F87X在CAN通信中的应用 9.3 软件清单 // ========CAN通信程序======= #include pic.h #include pic16f87x.h #include mcp2510.h // MCP2510寄存器定义 // =========常数和变量定义========= #define READ 0x03 // 读MCP2510指令代码 #define WRITE 0x02 // 写MCP2510指令代码 #define RESET 0xC0 // 复位MCP2510指令代码 #define RTS 0x80 // MCP2510请求发送指令代码 #define STA2510 0xA0 // 读MCP2510状态指令代码 #define BITMOD 0x05 // MCP2510位修改指令代码 int a[12]; // SPI发送或接收数据寄存器 int b[8]; // 发送或接收的数据 int c[8]; // 发送或接收的数据 int i; // 临时变量 int count; // 发送接收计数器 int count1=0; // for test int RecID_H=0; int RecID_L=0; int DLC=8; void SPIINT(); void TMR1INT(); void CCP1INT(); void SPIEXCHANGE(int count); void WAIT_SPI(); void RESET2510(); int RD2510(int adress,int n); void WR2510(int adress,int n); void RTS2510(int RTSn); int GETS2510(); void BM2510(int adress,int mask,int data); void SETNORMAL(); void TXCOMPLETE(int adress); void TXMSG(int DLC); int RXMSG(); void INIT2510(); void INIT877(); void INITSPI(); void ACK(); void wait(); // ========主程序======= main(void) { int l,detect=0; SSPIE=1; TMR1IE=1; CCP1IE=1; CCP2IE=1; PEIE=1; ei(); // 开中断 INIT877(); // 初始化PIC16F877芯片 INITSPI(); // 初始化SPI接口 INIT2510(); // 初始化MCP2510芯片 flag1=0; flag2=0; CCP1CON=0x05; CCP2CON=0x04; while(1) { RXMSG(); TXMSG(8); } } // ========中断服务程序======= // SPI中断服务子程序 void SPIINT() { SSPIF=0; a[i++]=SSPBUF; // 数据暂存a[]中 count-=1; if(count0) SSPBUF=a[i];// 未发送完,继续 else RE2=1; // 否则,片选信号置高电平 return; } // TMR1中断服务子程序 void TMR1INT() { TMR1IF=0; T1CON=0; if(!flag1){ TMR1H=0xfe; // 512 μs 脉冲宽度 TMR1L=0x00; T1CON=0x01; PORTD=0xff; // 输出所有通道 flag1=1; } else { flag1=0; PORTD=0; T1CON=0; } return; } // CCP1中断服务子程序 void CCP1INT() { CCP1IF=0; T1CON=0x01; return; } // CCP2中断服务子程序 void CCP2INT() { CCP2IF=0; T1CON=0x01; return; } // 中断入口,保护现场,判中断类型 void interrupt INTS() { di(); if(TMR1IF) TMR1INT(); // 定时器TMR1中断 else if(
您可能关注的文档
- LD61991电动送风过滤式防尘呼吸器通用技术条件.docx
- learn957com考研英语写作高级词汇(用这些作文会加分的)考研大预测.doc
- Logistic方程参数估计和曲线拟合.doc
- Linux26242在FL2440开发板上的内核移植.doc
- LDK-Q-ZL-10-039标准电池片及标准组件的校准使用及贮存规定02版.doc
- LGE960Nexus4解锁教程.docx
- LZ-MAL-PP-GG-201BOM维护流程-V10.doc
- linux26304内核的移植手册.doc
- Logos20112012四十个必威体育精装版的标志设计.doc
- LX电动单梁悬挂起重机检验规程2.doc
- PPP项目风险分析(2页).doc
- pro40和50破解方法.doc
- ProE40c000详细安装方法图文解说.doc
- Ph急性淋巴细胞白血病.doc
- proe50M060WIN64-MAGNiTUDE安装方法(图文解说破译).docx
- proe行软件出现LicenserequestfailedforfeaturePROEDDiTy1错误原因分析及解决方法.doc
- ProE野火50思考题解答(集美大学).doc
- POWER-CHIP改装实例MG618T升级德国remapsECU.doc
- project学习资料(工时工期单位).doc
- photoshop教程大全[基础入门][照片处理][字.doc
文档评论(0)