spi_config.lst
来自「菜鸟,详细NRF24E1运用,程序,电路」· LST 代码 · 共 169 行
LST
169 行
C51 COMPILER V9.00 SPI_CONFIG 11/13/2010 14:46:57 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE SPI_CONFIG
OBJECT MODULE PLACED IN spi_config.OBJ
COMPILER INVOKED BY: D:\Program Files\KEIL C V4\C51\BIN\C51.EXE spi_config.c BROWSE DEBUG OBJECTEXTEND
line level source
*** WARNING C500 IN LINE 1 OF SPI_CONFIG.C: LICENSE ERROR (R208: RENEW LICENSE ID CODE (LIC))
1 #include "reg24le1.h"
2 #include "config.h"
3
4 //给主SPI接口的一些状态的宏定义
5 #define txFifoReady (SPIMSTAT&0X01)
6 #define rxDataReady (SPIMSTAT&0X04)
7 #define txFifoEmpty (SPIMSTAT&0x02)
8 #define rxFifoFull (SPIMSTAT&0x08)
9 //给从SPI接口的一些状态的宏定义
10 #define csnHigh (SPISSTAT&0x20)
11 #define csnLow (SPISSTAT&0x10)
12 #define spiSlaveDone (SPISSTAT&0x01)
13
14
15 //定义函数
16 void mspiconfig() /*SPI的配置函数*/
17 {
18 1 SPIMCON0=(0x01<<4)|0x01;/*配置SPI时钟为1/4·ckMCU, MSBit first, LSBit last. 使能SPI*/
19 1 SPIMCON1=0x0f;/*禁止所有SPI中断 */
20 1 }
21 //配置从SPI接口的寄存器
22 void sspiconfig()
23 {
24 1 SPISCON0=0x01; //使能SLAVE SPI
25 1 }
26 //主机传输一个数据
27 unsigned char transmit(unsigned char dat)
28 {
29 1 unsigned da;
30 1 CSN=0;
31 1 if(txFifoReady)
32 1 SPIMDAT=dat;
33 1 /* else
34 1 {
35 1 while(!txFifoReady);
36 1 SPIMDAT=dat;
37 1 }
38 1 if(rxDataReady)
39 1 da=SPIMDAT ;
40 1 CSN=1; */
41 1 delay(5);
42 1 return da;
43 1 }
44 //从机接受一个数据
45 unsigned char getdat()
46 {
47 1 unsigned char dat;
48 1 if(spiSlaveDone)//如果有传输
49 1 dat=SPISDAT;
50 1 return dat;
51 1 }
52
53 /*配置对应的IO口*/
54 void ioconfig()
C51 COMPILER V9.00 SPI_CONFIG 11/13/2010 14:46:57 PAGE 2
55 {
56 1 //master spi
57 1 P1DIR&=0xC3;/*配置P12,P13,P14,P15为输出*/
58 1 P1DIR|=0X40;//P16为输入
59 1 CSN=1;
60 1
61 1 //slave spi
62 1 P1DIR&=0xfe; //配置SSPI的端口方向P00输出 SCSN
63 1 P1DIR|=0X02; //MISO
64 1
65 1 P0DIR|=0X80; //MOSI
66 1 P0DIR|=0X20; //SCLK
67 1
68 1 P0DIR|=0X01; //配置P00为按键输入
69 1 P00=1;
70 1 LED=0; /*低输出*/
71 1 }
72 /*配置串口*/
73 void uart()
74 {
75 1 CLKCTRL = 0x28; /*设置16M时钟*/
76 1 CLKLFCTRL = 0x01; /*设置32.768K时钟*/
77 1
78 1 P0DIR &= 0xF7; /* P03 (TxD) 输出 */
79 1 P0DIR |= 0x10; // P04 (RxD) 输入 */
80 1 P0|=0x18;
81 1
82 1 S0CON = 0x50;
83 1 PCON |= 0x80; // SMOD = 1
84 1 WDCON |= 0x80; // Select internal baud rate generator
85 1
86 1 S0RELL = 0xFB;
87 1 S0RELL = 0xF3; // BAUD_38K4
88 1 }
89
90 /*延时函数*/
91 void delay(unsigned int dx)
92 {
93 1 int dj;
94 1 for(;dx>0;dx--)
95 1 for(dj=120;dj>0;dj--)
96 1 {
97 2 ;
98 2 }
99 1 }
100
101 /*打印一个字符*/
102 void putch(char ch)
103 {
104 1 S0BUF=ch;
105 1 while(!TI0);
106 1 TI0=0;
107 1 }
108 /*字符串的显示*/
109 void puts(char *str)
110 {
111 1 while(*str!='\0')
112 1 {
113 2 putch(*str++);
114 2 }
115 1 }
116
C51 COMPILER V9.00 SPI_CONFIG 11/13/2010 14:46:57 PAGE 3
117 unsigned char keyscan()
118 {
119 1 static char f=0;
120 1 P0CON=0XD0; //设置P00为输入
121 1 if(!P00)
122 1 {
123 2 delay(5);
124 2 if(!P00)
125 2 {
126 3 while(!P00);
127 3 if(f)
128 3 f=0;
129 3 else
130 3 f=1;
131 3 return (f);
132 3 }
133 2
134 2 }
135 1 return f;
136 1 }
137
138
139
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 209 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 5
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?