C51模拟SPI接口

发布者:码字奇思最新更新时间:2016-10-26 来源: eefocus关键字:C51  模拟SPI接口 手机看文章 扫描二维码
随时随地手机看文章
include

/*********************************************
          模拟SPI接口I/O定义
*********************************************/
sbit    spi_cs=P1^2;  
sbit    spi_di=P1^0;  
sbit    spi_clk=P1^1;
sbit    spi_do=P1^3; 

#define set_spi_cs  spi_cs=1  
#define clr_spi_cs  spi_cs=0  
#define set_spi_clk  spi_clk=1  
#define clr_spi_clk  spi_clk=0  
#define set_spi_di  spi_di=1  
#define clr_spi_di  spi_di=0  
#define read_spi_do  spi_do   
/*********************************************
         1ms delay ,22.1184MHZ,STC
*********************************************/
void delay_ms(unsigned int ms)                    
{
 unsigned int i,j;
 for(i=0;i  for(j=0;j<1947;j++);
}
/*********************************************
         向SPI器件写入一个字节数据
*********************************************/
void spi_write(unsigned char spi_dat)  
{  
 unsigned  char  i;  
 for  (i=0;i<8;i++)  
 {  
  clr_spi_clk;    
  if((spi_dat & 0x80)==0x80)  
  set_spi_di;  
  else  
  clr_spi_di;  
  set_spi_clk;   
  spi_dat=(spi_dat<<1);  
 }  
 
}  
/*********************************************
         从SPI器件读出一个字节数据
*********************************************/
unsigned char spi_read()  
{  
 unsigned char i,spi_dat;  
 clr_spi_cs;  
   for (i=0;i<8;i++)  
 {                                  
  clr_spi_clk;  
     spi_dat=(spi_dat<<1);  
     set_spi_clk;  
  if(read_spi_do==1)  
     spi_dat|=0x01;  
  else  
     spi_dat&=~0x01;  
 }  
 return spi_dat;  
}
/*********************************************
          模拟SPI接口测试主程序
*********************************************/
main()
{
 unsigned int i;
 set_spi_cs;
 spi_do=0;
 delay_ms(1);
 for(i=0;i<1;i++)
 {
     clr_spi_cs;  
  spi_write(0x00);
  spi_write(0xff);
  set_spi_cs;
     delay_ms(100);
 }
 while(1);
}
关键字:C51  模拟SPI接口 引用地址:C51模拟SPI接口

上一篇:4*4矩阵键盘C51程序
下一篇:DS18B20多点温度检测系统

推荐阅读最新更新时间:2024-03-16 15:17

Keil C51开发系统基本知识1
Keil C51开发系统基本知识 1. 第一节 系统概述 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。 下面详细介绍Keil C51开发系统各部分功能和使用。 2. 第二节 Ke
[单片机]
C51---2.3 LED流水灯
原理图 main函数 固定500ms延时 LED1-LED8流水灯闪烁 #include REGX52.H #include INTRINS.H void Delay500ms() //@12.000MHz { unsigned char i, j, k; _nop_(); i = 4; j = 205; k = 187; do { do { while (--k); } while (--j); } while (--i); } void main() { while(1) { P2=0XFE;//1111 1110 De
[单片机]
C51---2.3 LED流水灯
《初学者C51自学笔记》之ADC0804
#include reg52.h #define uchar unsigned char #define uint unsigned int sbit rs=P2^4; sbit rw=P2^5; sbit e=P2^6; sbit adcs=P3^5; sbit adrd=P3^0; sbit adwr=P3^3; sbit P23=P2^3; uchar table1 = www.baidu.com ; uchar table2 = LCD1602 test ok! ; uchar table3 = 0123456789 ; //延时函数,在12MHz的晶振频率下 //大约50us的延时 void d
[单片机]
《初学者<font color='red'>C51</font>自学笔记》之ADC0804
单片机 C51 编程要点总结
1、头文件:#include 2、预定义:sbit LED = P1^0// 定义 P1 口的 0 位为 LED 注:“P1^0”这个写法,与 A51 不同(A51 是 P1.0),P1 是一组端口,端口号范围 0~7 注2:sbit 用于定义 SFR(特殊功能寄存器)的位变量,上例中 LED 作为“全局变量”进行定义 注3:以下写法是错误的: sbit code table = {P1^0, P1^1, P1^2, P1^3};// 想用 table 指定不同的引脚,但这么做会报错 sbit table = {P1^0, P1^1, P1^2, P1^3}; // 考虑到上面可能是 code 关
[单片机]
DS18B20单片机C51温度计实践
18B20温度计,正负温度显示。最大99摄氏度。用万能板手工焊接。调试成功,正常显示。共阳数码管由三极管驱动。 下面是C51程序,您一看就懂了: #include reg52.h #include intrins.h #define uint unsigned int #define uchar unsigned char uchar code table ={ 0x14,0xf5,0x19,0x51, //0 1 2 3 0xf0,0x52,0x12,0x75, // 4 5 6 7 0x10,0x50,0x30,0x92, // 8 9 a b 0x1e,0x
[单片机]
C51 数码管 numeric tube
#include reg52.h #define uchar unsigned char #define uint unsigned int uint i,j; sbit dula=P2^6; sbit wela=P2^7; uchar table ={0x3f,0x06,0x5b, 0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77, 0x7c,0x39,0x5e,0x79,0x71}; void delay(uint); void main() { while(1) { P0=0xea; wela=1; wela=0; P0=table ; dula=1;
[单片机]
<font color='red'>C51</font> 数码管 numeric tube
单片机C51中的NOP指令使用经验
方法1: 在keil C51中,直接调用库函数: #include // 声明了void _nop_(void); _nop_(); // 产生一条NOP指令 作用:对于延时很短的,要求在us级的,采用“_nop_”函数,这个函数相当汇编NOP指令,延时几微秒。NOP指令为单周期指令,可由晶振频率算出延时时间,对于12M晶振,延时1uS。对于延时比较长的,要求在大于10us,采用C51中的循环语句来实现。 方法2: 插入方式: __asm //是两个下划线 { nop; }
[单片机]
用PC104控制模块和C51单片机实现AD检测板
由PC104控制模块和Cgnal C8051F06x单片机组成的控制检测板可用于高端检测设备中,充分利用PC104控制模块和单片机丰富的软硬件资源,可用于各种检测应用中。 在开发检测设备的过程中,可采用核心板加底板的设计方法来降低技术难度,实现可编程、高性能、开发简单、扩展性强的设计方案,并且稍加改动就可以很容易地应用到其他领域。 核心板采用PC104控制模块,利用其强大的处理能力来处理数据,如数据存储、数据分析、数据评估,尤其是友好的GUI简化了用户的使用难度。底板采用Cgnal8051F06x、双口RAM和缓冲寄存器,利用C8051F06X单片机丰富的软硬件资源来实现可编程,可设置的各种复杂功能。核心板与底板之间只有
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved