- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
项目10 MCU之间的串行通信(
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 10.2 串行外围器件(SPI)模块的应用 _Startup: LDHX #__SEG_END_SSTACK ; 初始化堆栈 TXS CLI ; 中断使能 SPI1C1:SPIE=0,SPE=0,SPTIE=0,MSTR=0,CPOL=0,CPHA=0,SSOE=0,LSBFE=0 CLR SPI1C1 ; SPI1C2: MODFEN=1,BIDIROE=0,SPISWAI=0,SPC0=0 MOV #$10,SPI1C2 ; SPI1BR: SPPR2=0,SPPR1=0,SPPR0=1,SPR2=0,SPR1=0,SPR0=1 MOV #$11,SPI1BR 10.2 串行外围器件(SPI)模块的应用 LDA SPI1S ; 读SPI1S清除 MODF 标志 ;SPI1C1: SPIE=1,SPE=1,SPTIE=0,MSTR=0,CPOL=1,CPHA=1,SSOE=0,LSBFE=0 MOV #$CC,SPI1C1 LDA #$0 STA COUNT ;初始化计数变量 mainLoop: ; Insert your code here NOP feed_watchdog ;喂看门狗用于防干扰 BRA mainLoop ; 10.2 串行外围器件(SPI)模块的应用 XDEF isrVspi1 ;SPI中断子程序 isrVspi1: LDA SPI1S ; 读SPI1S清除 MODF 标志 MOV SPI1D,VOLM ;读取数值 存放在变量VOLM中 INC COUNT ;计数器加1 LDA COUNT ;比较,看是否读取了10个数据,是则跳转到SEND_DATA CBEQA #$A,SEND_DATA RTI 10.2 串行外围器件(SPI)模块的应用 SEND_DATA: LDA #$5A STA SPI1D ;发送回复信号5A LDA #$0 ;初始化计数变量,重新计数 STA COUNT RTI 10.2 串行外围器件(SPI)模块的应用 ③.SPI主器件C语言源程序: #include hidef.h #include derivative.h byte count1,volum; void MCU_init(void); __interrupt void isrVspi1(void); 10.2 串行外围器件(SPI)模块的应用 void (* near const _vect[])(void) @0xFFE0 = { isrVspi1, //SPI发送中断入口地址 }; 10.2 串行外围器件(SPI)模块的应用 void main(void) { //主程序 EnableInterrupts; //中断使能 MCU_init(); //初始化 for(;;) { __RESET_WATCHDOG(); //喂看门狗,用于防干扰 if(SPI1S==SPI1S_SPRF_MASK) //是否有接收满标志 {
文档评论(0)