单片机C语言应用100例
单片机C语言应用100例,单片机,语言,应用,利用,运用
/实例92:对SPI总线上挂接多个X5045的读写操作#include /包含单片机寄存器的头文件#include /包含_nop_()函数定义的头文件sbit SCK=P34; /将SCK位定义为P3.4引脚sbit SI=P35; /将SI位定义为P3.5引脚sbit SO=P36; /将SO位定义为P3.6引脚sbit CS1=P37; /将CS定义为P3.7引脚sbit CS2=P33; /将CS1位定义为P3.7引脚#define WREN 0x06 /写使能锁存器允许#define WRDI 0x04 /写使能锁存器禁止#define READ 0x03 /读出#define WRITE 0x02 /写入/*函数功能:延时1ms(3j+2)*i=(333+2)10=1010(微秒),可以认为是1毫秒*/void delay1ms()unsigned char i,j;for(i=0;i10;i+)for(j=0;j33;j+); /*函数功能:延时若干毫秒入口参数:n*/void delaynms(unsigned char n)unsigned char i;for(i=0;in;i+)delay1ms();/*函数功能:从X5045的当前地址读出数据出口参数:x*/unsigned char ReadCurrent(void)unsigned char i;unsigned char x=0x00; /储存从X5045中读出的数据SCK=1; /将SCK置于已知的高电平状态for(i = 0; i 8; i+)SCK=1; /拉高SCKSCK=0; /在SCK的下降沿输出数据x=1; /将x中的各二进位向左移一位,因为首先读出的是字节的最高位数据 x|=(unsigned char)SO; /将SO上的数据通过按位“或“运算存入 x return(x); /将读取的数据返回/*函数功能:写数据到X5045的当前地址入口参数:dat*/void WriteCurrent(unsigned char dat)unsigned char i;SCK=0; /将SCK置于已知的低电平状态for(i = 0; i 8; i+) / 循环移入8个位SI=(bit)(dat /通过按位“与”运算将最高位数据送到S/因为传送时高位在前,低位在后SCK=0;SCK=1; /在SCK上升沿写入数据dat=1; /将y中的各二进位向左移一位,因为首先写入的是字节的最高位/*函数功能:写数据到第一个X5045的指定地址入口参数:addr*/void WriteSet1(unsigned char dat,unsigned char addr)CS2=1; /使第二个X5045的片选无效SCK=0; /将SCK置于已知状态CS1=0; /拉低CS,选中X5045WriteCurrent(WREN); /写使能锁存器允许CS1=1; /拉高CSCS1=0; /重新拉低CS,否则下面的写入指 将 WriteCurrent(WRITE); /写入指 WriteCurrent(addr); /写入指定地址WriteCurrent(dat); /写入数据CS1=1; /拉高CSSCK=0; /将SCK置于已知状态/*函数功能:写数据到第二个X5045的指定地址入口参数:addr*/void WriteSet2(unsigned char dat,unsigned char addr)CS1=1; /使第一个X5045的片选无效SCK=0; /将SCK置于已知状态CS2=0; /拉低CS,选中X5045WriteCurrent(WREN); /写使能锁存器允许CS2=1; /拉高CSCS2=0; /重新拉低CS,否则下面的写入指 将 WriteCurrent(WRITE); /写入指 WriteCurrent(addr); /写入指定地址WriteCurrent(dat); /写入数据CS2=1; /拉高CSSCK=0; /将SCK置于已知状态/*函数功能:从第一个X5045的指定地址读出数据入口参数:addr出口参数:dat*/unsigned char ReadSet1(unsigned char addr)unsigned char dat;CS2=1; /使第二个X5045的片选无效SCK=0; /将SCK置于已知状态CS1=0; /拉低CS,选中X5045WriteCurrent(READ); / 读WriteCurrent(addr); /写入指定地址dat=ReadCurrent(); /读出数据CS1=1; /拉高CSSCK=0; /将SCK置于已知状态return dat; /返回读出的数据/*函数功能:从第二个X5045的指定地址读出数据入口参数:addr出口参数:dat*/unsigned char ReadSet2(unsigned char addr)unsigned char dat;CS1=1; /使第一个X5045的片选无效SCK=0; /将SCK置于已知状态CS2=0; /拉低CS,选中X5045WriteCurrent(READ); / 读WriteCurrent(addr); /写入指定地址dat=ReadCurrent(); /读出数据CS2=1; /拉高CSSCK=0; /将SCK置于已知状态return dat; /返回读出的数据/*函数功能: 位 */void WatchDog1(void)CS1=1; /拉高CSCS1=0; /CS引脚的一个下降沿 位 定时器CS1=1; /拉高CS/*函数功能: 位 */void WatchDog2(void)CS2=1; /拉高CSCS2=0; /CS引脚的一个下降沿 位 定时器CS2=1; /拉高CS/*函数功能: */void main(void) unsigned char x;while(1)WriteSet1(0xf0,0x10); /将数据“0xaa”写入第一个X5045的指定地址“0x10”delaynms(10); /X5045的写入 为 10msx=ReadSet1(0x10); /将数据从第一个X5045中的指定地址读出 WriteSet2(x,0x20); /将数据x写入第二个X5045的指定地址“0x20delaynms(10); /X5045的写入 为 10msP1=ReadSet2(0x20); /将数据从第二个X5045中的指定地址读出 ,送P1口 delaynms(100); /延时100msWatchDog1(); / 位第一个X5045的 WatchDog2(); / 位第二个X5045的
收藏
编号:520475
类型:共享资源
大小:99.15KB
格式:RAR
上传时间:2019-03-08
10
积分
- 关 键 词:
-
单片机
语言
应用
利用
运用
- 资源描述:
-
单片机C语言应用100例,单片机,语言,应用,利用,运用
展开阅读全文
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
装配图网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。