📄 fasong.lst
字号:
C51 COMPILER V7.06 FASONG 08/12/2008 12:43:43 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE FASONG
OBJECT MODULE PLACED IN Fasong.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Fasong.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg52.h>
2 #include <ABSACC.h>
3 #include <intrins.h>
4 #include <stdio.h>
5 //--------------------------------------------------------------------------------------------------------
---------
6 #define uint unsigned int
7 #define uchar unsigned char
8 //--------------------------------------------------------------------------------------------------------
---------
9 #define BYTE_BIT0 0x01
10 #define BYTE_BIT1 0x02
11 #define BYTE_BIT2 0x04
12 #define BYTE_BIT3 0x08
13 #define BYTE_BIT4 0x10
14 #define BYTE_BIT5 0x20
15 #define BYTE_BIT6 0x40
16 #define BYTE_BIT7 0x80
17 //--------------------------------------------------------------------------------------------------------
---------
18 bdata unsigned char DATA_BUF;
19 #define DATA7 ((DATA_BUF&BYTE_BIT7) != 0)
20 #define DATA0 ((DATA_BUF&BYTE_BIT0) != 0)
21 sbit flag =DATA_BUF^7;
22 sbit flag1 =DATA_BUF^0;
23 //---------------------------------------------------发送数据缓冲区---------------------------------------
-----------
24 #define TxRxBuf_Len 4
25 unsigned char TxRxBuf[TxRxBuf_Len]=
26 {
27 0x29,0x30,0x31,0x32,
28 };
29 //---------------------------------------------------配置口定义-------------------------------------------
---------
30 sbit TXEN=P1^0;
31 sbit TRX_CE=P3^4;
32 sbit PWR=P1^1;
33 sbit MISO=P1^6;
34 sbit MOSI=P1^5;
35 sbit SCK=P1^7;
36 sbit CSN=P1^3;
37 //---------------------------------------------------NRF905状态IO-----------------------------------------
------------
38 sbit AM=P1^4;
39 sbit DR=P3^2;
40 sbit CD=P1^2;
41 //----------------------------------------------------按键------------------------------------------------
---
42 sbit KEY0=P3^6;
43 sbit KEY1=P3^7;
44 //----------------------------------------------------数码管位控制----------------------------------------
----------------
45 sbit led1=P2^2;
46 sbit led0=P2^3;
47 sbit led2=P2^1;
C51 COMPILER V7.06 FASONG 08/12/2008 12:43:43 PAGE 2
48 sbit led3=P2^0;
49 //--------------------------------------------------------------------------------------------------------
----------
50 uchar seg[10]={0xC0,0xCF,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; //0~~9段码
51 //-------------------------------------------------------nrf905控制指令-----------------------------------
---------
52 #define WC 0x00
53 #define RC 0x10
54 #define WTP 0x20
55 #define RTP 0x21
56 #define WTA 0x22
57 #define RTA 0x23
58 #define RRP 0x24
59 //------------------------------------------------NRF905寄存器配置----------------------------------------
---------
60 unsigned char idata RFConf[11]=
61 {
62 0x00, //配置命令//
63 0x4c, //CH_NO,配置频段在430MHZ
64 0x0c, //输出功率为10db,不重发,节电为正常模式
65 0x44, //地址宽度设置,为4字节
66 0x04,0x04, //接收发送有效数据长度为32字节
67 0xCC,0xCC,0xCC,0xCC, //接收地址
68 0x58, //CRC充许,8位CRC校验,外部时钟信号不使能,16M晶振
69 };
70 code TxAddress[4]={0xcc,0xcc,0xcc,0xcc};
71 char tf;
72 //------------------------------------------------延时----------------------------------------------------
---------
73 static void Delay(uchar n)
74 {
75 1 uint i;
76 1 while(n--)
77 1 for(i=0;i<80;i++);
78 1 }
79 //---------------------------------------------------SPI读函数--------------------------------------------
----------
80 unsigned char SpiRead(void)
81 {
82 1 unsigned char j;
83 1 for (j=0;j<8;j++)
84 1 {
85 2 DATA_BUF=DATA_BUF<<1;
86 2 SCK=1;
87 2 if (MISO) //读取最高位,保存至最末尾,通过左移位完成整个字节
88 2 {
89 3 DATA_BUF|=BYTE_BIT0;
90 3 }
91 2 else
92 2 {
93 3 DATA_BUF&=~BYTE_BIT0;
94 3 }
95 2 SCK=0;
96 2 }
97 1 return DATA_BUF;
98 1 }
99 //-------------------------------------------------SPI写函数----------------------------------------------
-------------
100 void SpiWrite(unsigned char send)
101 {
102 1 unsigned char i;
103 1 DATA_BUF=send;
C51 COMPILER V7.06 FASONG 08/12/2008 12:43:43 PAGE 3
104 1 for (i=0;i<8;i++)
105 1 {
106 2 if (DATA7) //总是发送最高位
107 2 {
108 3 MOSI=1;
109 3 }
110 2 else
111 2 {
112 3 MOSI=0;
113 3 }
114 2 SCK=1;
115 2 DATA_BUF=DATA_BUF<<1;
116 2 SCK=0;
117 2 }
118 1 }
119 //------------------------------------------------------初始化nRF905--------------------------------------
--------
120 void nRF905Init(void)
121 {
122 1 CSN=1; // Spi disable
123 1 SCK=0; // Spi clock line init low
124 1 DR=0; // Init DR for input
125 1 AM=0; // Init AM for input
126 1 CD=0; // Init CD for input
127 1 PWR=1; // nRF905 power on
128 1 TRX_CE=0; // Set nRF905 in standby mode
129 1 TXEN=0; // set radio in Rx mode
130 1 }
131 //-----------------------------------------------------初始化寄存器---------------------------------------
---------
132 void Config905(void)
133 {
134 1 uchar i;
135 1 CSN=0; // Spi enable for write a spi command
136 1 //SpiWrite(WC); // Write config command写放配置命令
137 1 for (i=0;i<11;i++) // Write configration words 写放配置字
138 1 {
139 2 SpiWrite(RFConf[i]);
140 2 }
141 1 CSN=1; // Disable Spi
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -