📄 spi_master.lst
字号:
C51 COMPILER V7.01 SPI_MASTER 12/28/2006 18:37:39 PAGE 1
C51 COMPILER V7.01, COMPILATION OF MODULE SPI_MASTER
OBJECT MODULE PLACED IN spi_master.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE spi_master.c DEBUG OBJECTEXTEND
stmt level source
1 /* Megawin "SPI process" demo code
2 * Edited by: Peter Lin
3 * Mail: peter@megawin.com.tw
4 * tel:03-5750050
5 */
6
7 /*include megawin header file */
8 #include "reg82xx.h"
9 char serial_data;
10 char data_example=0x55;
11 char data_save;
12 bit transmit_completed= 0;
13 sbit test_SCON= P2^4;
14
15 /**
16 * FUNCTION_PURPOSE: This file set up spi in master mode
17 * FUNCTION_INPUTS: P1.6(MISO) serial input
18 * FUNCTION_OUTPUTS: P1.5(MOSI) serial output
19 * FUNCTION_OUTPUTS: P1.4(/SS)=0 slave selected/=1 master selected
20 */
21 void init_spi(void)
22 {
23 1 P1M0 = 0x00;
24 1 P1M1 = 0x00;
25 1 SPICTL = 0x00; /*clear SPI Control register */
26 1 SPICTL |= 0xC0; /*SSIG = 0 ,SPEN = 1,Slave Mode without SS Pin*/
27 1 P1_4=0; /* SS Pin pill low */
28 1 SPICTL |= 0x02; /* Fclk Periph/128 */
29 1 SPICTL &= ~0x08; /* CPOL=0; transmit mode example */
30 1 SPICTL |= 0x00; /* CPHA=1; transmit mode example */
31 1 AUXR |= 0x80; /* enable spi interrupt */
32 1 SPICTL |= 0x40; /* run spi */
33 1 ESPI_ADC = 1; /* enable SPI/ADC interrupt */
34 1 }
35
36 // initialization UART
37 void init_uart(void)
38 {
39 1 TMOD=0x21;
40 1 SCON=0x50; // Crystal as 11.0592Mhz
41 1 TH1=0xFD; //Configure Timer1, so to set UART to operate at buad rate 9600
42 1 TL1=0xFD;
43 1 PCON=0x80;
44 1 TCON=0x45;
45 1 RI=0;
46 1 ES=1;
47 1 }
48
49 void SCON_int (void) interrupt 4
50
51 {
52 1 if(TI)
53 1 {
54 2 test_SCON ^=1;
55 2 TI=0;
C51 COMPILER V7.01 SPI_MASTER 12/28/2006 18:37:39 PAGE 2
56 2 REN=1;
57 2 }
58 1 else
59 1 {
60 2 RI=0;
61 2 SPIDAT=SBUF;
62 2 while(SPISTAT & 0x80 == 0);
63 2 }
64 1 }
65
66
67 /**
68 * FUNCTION_PURPOSE:interrupt
69 * FUNCTION_INPUTS: void
70 * FUNCTION_OUTPUTS: transmit_complete is software transfert flag
71 */
72 void it_SPI(void) interrupt 9 /* interrupt address is 0x004B */
73 {
74 1 switch ( SPISTAT & 0xC0) /* read and clear spi status register */
75 1 {
76 2 case 0x80:
77 2 TI = 0;
78 2 SBUF=SPIDAT; /* read receive data */
79 2 transmit_completed=1;/* set software flag */
80 2 SPISTAT = 0xC0; //clear spistat flag
81 2 break;
82 2
83 2 case 0x10:
84 2 /* put here for mode fault tasking */
85 2 break;
86 2
87 2 case 0x40:
88 2 /* put here for overrun tasking */
89 2 break;
90 2 }
91 1 SPISTAT |= 0xC0; // clear SPIF Flag
92 1 }
93
94
95
96 void main(void)
97 {
98 1 init_spi();
99 1 init_uart();
100 1 EA=1; /* enable interrupts */
101 1 transmit_completed = 0; /* clear software transfert flag */
102 1
103 1 while(1)
104 1 {
105 2
106 2 if(transmit_completed)
107 2 {
108 3 SPIDAT = serial_data; /* echo data to master */
109 3 transmit_completed = 0; /* clear software transfert flag */
110 3
111 3 }
112 2 }
113 1 }
114
MODULE INFORMATION: STATIC OVERLAYABLE
C51 COMPILER V7.01 SPI_MASTER 12/28/2006 18:37:39 PAGE 3
CODE SIZE = 124 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -