S单片机各个模块程序代码.doc_第1页
S单片机各个模块程序代码.doc_第2页
S单片机各个模块程序代码.doc_第3页
S单片机各个模块程序代码.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、12C5A12C5A12C5A12C5A12C5A12C5A12M6M3M1.5M12C5A12C5A闲模式,低速模式12C5A0f12C5A2A12C5A12C5A12C5A0c12C5A12C5A12C5A0L0L7f0a0L0L0L0L0L0L0L0L0L12C5A12C5A12C5A12C5A12C5A速 .同步的通信总线, 有两种操作模式: 主模式和从模式。12C5A12C5A12C5A速 . 同步的通信总线, 有两种操作模式: 主模式和从模式。/ 涉及寄存器: SPCTL(SPI 控制寄存器 ) 、SPSTAT(SPI 状态寄存器 ) 、 SPDAT(数据寄存器 )/AUXR1(辅

2、助寄存器 )/程序说明:本程序为SPI 的从机程序 , 从机通过SPI 接收主机发送过来的数据, 并通过串口/显示到 PC端,/*/ #include #include #define uchar unsigned char#define uint unsigned int/*对 SPCTL寄存器的设置位宏定义*/#define SSIG0x80 /SS引脚忽略#define SPEN0x40 /SPI使能位#define DORD0x20 /SPI数据发送 LSB 最先发送#define MSTR0x10 /主从模式选择#define CPOL0x08 /SPICLK空闲时为高电平#defi

3、ne CPHA0x04 /数据在 SPICLK 的前时钟沿驱动, 并在后时钟沿采样#define SP_CLK0 0x00 /SPI时钟频率为 CPU_CLK/4#define SP_CLK1 0x01 /SPI时钟频率为 CPU_CLK/16#define SP_CLK2 0x02 /SPI时钟频率为 CPU_CLK/64#define SP_CLK3 0x03 /SPI时钟频率为 CPU_CLK/128/*对 SPSTAT寄存器的设置位宏定义*/#define SPIF0x80/传输完成标志#define WCOL0x40 /SPI写冲突标志/*SPI口切换宏定义 */#define SP

4、I_P4 0x20/SPI从 P1 口切换到P4 口/*波特率选择 */#define BTL 9600 /若要更改波特率直接更改此处, 当波特率大于9600 时需修改相应的接收程序 ,/ 可选波特率有以下:否则有可能出现乱码/ 波特率为 2400/波特率为 28800/ 波特率为 4800/波特率为 38400/ 波特率为 9600/波特率为 57600/ 波特率为 14400/波特率为 115200/ 波特率为 19200 void UART_init(void); uchar Receive(void); void Printf( uchar *p ); void Init_SPI(vo

5、id);void Send_byte( uchar byte );/*/串口初始化/*/void UART_init(void)/SM0= 0;/选择串口为方式1 工作/SM1= 1;/8位数据波特率可变/REN = 1;/允许串口接收SCON = 0x50;#if( BTL = 2400 )BRT = 0x70; /波特率设置为 9600#elif( BTL = 4800 )BRT = 0xB8;#elif( BTL = 9600 )BRT= 0xDC;#elif( BTL = 14400 )BRT= 0xE8;#elif( BTL = 19200 )BRT = 0xEE;#elif( BT

6、L = 28800 )BRT = 0xF4;#elif( BTL = 38400 )BRT = 0xF7;#elif( BTL = 57600 )BRT = 0xFA;#elif( BTL = 115200 )BRT = 0xFD;#endifAUXR = 0x15; /选择独立波特率发生器为串行/口的波特率发生器 , 模式为 1T/ES= 1;/允许串口中断/ IPH = 0X10; /PSH = 1;/IP= 0X10; /PS = 1;串口 1 中断为最高优先级中断/EA= 1;/开总中断/*/ 发送一个字节数据 /*/ void Send_byte( uchar byte ) /SBU

7、F= byte;while(!TI);TI= 0;/*/打印字符/*/void Printf( uchar *p )while( *p != 0 )Send_byte(*p);p+;/*/接收函数/*/uchar Receive( void )uchar byte;_nop_();_nop_();_nop_();_nop_();if( RI = 1 )RI=0;byte = SBUF;return byte;/*/*名称: Init_SPI()/*功能 :对 SPI 进行初始化/*输入:无/*输出:无/*/void Init_SPI(void)SPDAT = 0;/清空数据寄存器SPSTAT

8、= SPIF|WCOL; /清空 SPI 状态寄存器SPCTL =SPEN;/SPI设置为从机模式IE2 = 0x02;/允许 SPI 中断/*/*名称: main/*功能 :/*输入:无/*输出:无/*/void main()uchar flag = 0;UART_init();Init_SPI();EA = 1;/开总中断while(1)flag = Receive();if(flag)/当 PC 端有给从机发送数据时把从机当前的SPDAT值发送出来Send_byte(SPDAT);flag = 0;/*/*名称: SPI_ISR()/*功能 : SPI中断服务/*输入:无/*输出:无/*/void SPI_ISR(void) interrupt 9 using 1 /使用工作寄存器组1SPSTAT =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论