STC12C5A60S2单片机各个模块程序代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

12C5A12C5A12C5A12C5A12C5A12C5A12M6M3M1.5M12C5A12C5A闲模式,低速模式

12C5A0f12C5A2

A12C5A12C5A12C5A0c12C5A12C5A12C5A0L0L7f0a0L0L0L0L0L0L0L0L0L12C5A12C5A12C5A12C5 A12C5A速.同步的通信总线,有两种操作模式:主模式和从模式。

12C5A12C5A12C5A速.同步的通信总线,有两种操作模式:主模式和从模式。

//

// 涉及寄存器:SPCTL(SPI控制寄存器)、SPSTAT(SPI状态寄存器)、SPDAT(数据寄存器)

// AUXR1(辅助寄存器)

// //

// 程序说明:本程序为SPI的从机程序,从机通过SPI接收主机发送过来的数据,并通过串口

// 显示到PC端,

//

//**************************************************************************** //

#include <12C5A>

#include <>

#define uchar unsigned char

#define uint unsigned int

/************对SPCTL寄存器的设置位宏定义*************/

#define SSIG 0x80 //SS引脚忽略

#define SPEN 0x40 //SPI使能位

#define DORD 0x20 //SPI数据发送LSB最先发送

#define MSTR 0x10 //主从模式选择

#define CPOL 0x08 //SPICLK空闲时为高电平

#define CPHA 0x04 //数据在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 SPIF 0x80 //传输完成标志

#define WCOL 0x40 //SPI写冲突标志

/************SPI口切换宏定义***************/

#define SPI_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(void);

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( BTL == 28800 )

BRT = 0xF4;

#elif( BTL == 38400 )

BRT = 0xF7;

#elif( BTL == 57600 )

BRT = 0xFA;

#elif( BTL == 115200 )

BRT = 0xFD;

#endif

AUXR = 0x15; //选择独立波特率发生器为串行

//口的波特率发生器,模式为1T

// ES = 1; //允许串口中断

// IPH = 0X10; //PSH = 1;

// IP = 0X10; //PS = 1;串口1中断为最高优先级中断

// EA = 1; //开总中断

}

//************************************************//

// 发送一个字节数据 //

相关文档
最新文档