完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在线急求大神,关于PIC16F1823单片机SPI的问题,从机接收到命令后令I/O管脚变成高电平,但是又立马变成了低电平怎么回事?sum累加也是同样问题,但主机发送命令速度越快,清零的速度就越慢。从机代码如下:
#include #include #include /* * */ #include __CONFIG(FOSC_INTOSC & WDTE_ON & PWRTE_ON & MCLRE_ON & CP_ON & CPD_ON & BOREN_ON & CLKOUTEN_OFF & IESO_ON & FCMEN_ON); __CONFIG(WRT_OFF & PLLEN_OFF & STVREN_ON & BORV_LO & LVP_OFF); #define nop() asm("nop") unsigned char RC_DATA; volatile unsigned char sum; void init_fosc(void) { OSCCON = 0x78;//16MHz //OSCCON = 0xF0;//32MHz } void init_SPI(void) { TRISCbits.TRISC0=1; // SCK input TRISCbits.TRISC1=1; // SDI input TRISCbits.TRISC2=0; // SDO output TRISCbits.TRISC3=1; // SS input APFCONbits.SDOSEL = 0; // RC2 ??? SDO ?? APFCONbits.SSSEL = 0; // RC3 ??? SS ?? ANSELCbits.ANSC0 = 0; // ?? I/O ANSELCbits.ANSC1 = 0; // ?? I/O ANSELCbits.ANSC2 = 0; // ?? I/O ANSELCbits.ANSC3 = 0; // ?? I/O INTCONbits.PEIE = 1; INTCONbits.GIE = 1; PIE1bits.SSP1IE = 1; //enables the SPI Receive interrupt SSP1STATbits.SMP = 0; //???????????????? SSP1STATbits.CKE = 1; // ??????????????? SSP1BUF = 0x00; SSP1CON1 = 0x34; // SSP1EN=1 CKP=1 SSPM 0100 //SSP1CON3bits.BOEN = 0; // ??????? SSP1STAT ???? BF ??? 1 ?? SSP1CON1 ???? SSP1OV // ??? 1 ?????????? } void spi_send_byte(unsigned int byte) { SSP1BUF = byte; while(BF==0); //?????? SSP1IF = 0; } void SPI_send(void){ switch(RC_DATA) { case(0xA0):RA5=!RA5; RC_DATA = 0x00; break; //Show Channel0 case(0xA1):sum=sum+1;spi_send_byte(sum);RC_DATA = 0x00; break; //Show Channel1 case(0xA2):spi_send_byte(0x33);RC_DATA = 0x00; break; //Show Channel2 case(0xA3):spi_send_byte(0x44);RC_DATA = 0x00; break; //Show Channel3 default: break; } } void interrupt isr(void) { if(SSP1IE && SSP1IF) { RC_DATA = SSP1BUF; SSP1IF= 0; SSP1CON1bits.WCOL=0; SPI_send(); } } /* * */ int main(int argc, char** argv) { init_fosc(); init_SPI(); ANSELA=0; //?RA TRISAbits.TRISA5=0;//??RA5??? RA5=0; sum=0; while(1) { nop(); } } |
|
相关推荐
5个回答
|
|
clk应该是输出口
|
|
|
|
还有ss引脚应该也是输出楼吧
|
|
|
|
|
|
|
|
回帖奖励 +1 分积分
你好,你还保留PIC16F1823单片机SPI程序的例程吗?我在网上找不到,如果方便的话能给我发一下吗?谢谢
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
求解外围电路实现的是4脚给持续低电平复位并正常工作,高电平不工作的原因
2077 浏览 1 评论
3497 浏览 3 评论
PIC1946程序有一个变量在运行过程中恢复初始值其他变量保持不变
2330 浏览 2 评论
2755 浏览 0 评论
PIC16F1825的RC5引脚,在主程序中操作无效,在中断中可以改变是为什么?
4014 浏览 5 评论
962浏览 0评论
用XC8编译PIC18F25K80时提示下面Error,求怎么解决这个问题
6347浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 09:20 , Processed in 0.721018 second(s), Total 88, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号