f2ffd25fbcf18523d3fb7540f7aae835530bccc6.svn-base 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. C51 COMPILER V9.53.0.0 SPI_MASTER_PO 08/20/2018 11:57:34 PAGE 1
  2. C51 COMPILER V9.53.0.0, COMPILATION OF MODULE SPI_MASTER_PO
  3. OBJECT MODULE PLACED IN .\Output\SPI_Master_Po.obj
  4. COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE Code\User\SPI_Master_Po.c OPTIMIZE(8,SPEED) BROWSE INCDIR(Code/Include)
  5. -DEFINE(FOSC_160000) DEBUG OBJECTEXTEND PRINT(.\Output\LST\SPI_Master_Po.lst) TABS(2) OBJECT(.\Output\SPI_Master_Po.obj)
  6. line level source
  7. 1 /*--------------------------------------------------------------------------------------------------------
  8. --*/
  9. 2 /*
  10. - */
  11. 3 /* Copyright(c) 2017 Nuvoton Technology Corp. All rights reserved.
  12. - */
  13. 4 /*
  14. - */
  15. 5 /*--------------------------------------------------------------------------------------------------------
  16. --*/
  17. 6
  18. 7 //********************************************************************************************************
  19. -***
  20. 8 // Website: http://www.nuvoton.com
  21. 9 // E-Mail : [email protected]
  22. 10 // Date : Jan/21/2017
  23. 11 //********************************************************************************************************
  24. -***
  25. 12
  26. 13 //********************************************************************************************************
  27. -***
  28. 14 // File Function: N76E003 SPI in Master mode demo code
  29. 15 //********************************************************************************************************
  30. -***
  31. 16 #include "N76E003.h"
  32. 17 #include "SFR_Macro.h"
  33. 18 #include "Function_define.h"
  34. 19 #include "Common.h"
  35. 20 #include "Delay.h"
  36. 21
  37. 22 //********************************************************************************************************
  38. -***
  39. 23 // Application: SPI Function
  40. 24 // Master send 0x90 and recevie 0x4E
  41. 25 // Master send 0x01 and recevie 0x55
  42. 26 // Master send 0x02 and recevie 0x56
  43. 27 // Master send 0x03 and recevie 0x4F
  44. 28 // Master send 0x04 and recevie 0x54
  45. 29 //
  46. 30 // Master recevie 0x4E and 0x4F form slave after transmitting
  47. 31 //********************************************************************************************************
  48. -***
  49. 32
  50. 33 //--------------------------------------------------------------------------------------------------------
  51. ----
  52. 34 void SPI_Error(void)
  53. 35 {
  54. 36 1 printf ("\nSPI error.\n");
  55. 37 1 while(1) // SPI error and P0.7 flash/
  56. 38 1 {
  57. 39 2 P07 = 1;
  58. 40 2 Timer0_Delay1ms(500);
  59. 41 2 P07 = 0;
  60. 42 2 Timer0_Delay1ms(500);
  61. C51 COMPILER V9.53.0.0 SPI_MASTER_PO 08/20/2018 11:57:34 PAGE 2
  62. 43 2 }
  63. 44 1 }
  64. 45
  65. 46 //--------------------------------------------------------------------------------------------------------
  66. ----
  67. 47 void SPI_Initial(void)
  68. 48 {
  69. 49 1 P15_Quasi_Mode; // P15 (SS) Quasi mode
  70. 50 1 P10_Quasi_Mode; // P10(SPCLK) Quasi mode
  71. 51 1 P00_Quasi_Mode; // P00 (MOSI) Quasi mode
  72. 52 1 P01_Quasi_Mode; // P22 (MISO) Quasi mode
  73. 53 1
  74. 54 1 set_DISMODF; // SS General purpose I/O ( No Mode Fault )
  75. 55 1 clr_SSOE;
  76. 56 1
  77. 57 1 clr_LSBFE; // MSB first
  78. 58 1
  79. 59 1 clr_CPOL; // The SPI clock is low in idle mode
  80. 60 1 set_CPHA; // The data is sample on the second edge of SPI clock
  81. 61 1
  82. 62 1 set_MSTR; // SPI in Master mode
  83. 63 1 SPICLK_DIV16; // Select SPI clock
  84. 64 1 set_SPIEN; // Enable SPI function
  85. 65 1 clr_SPIF;
  86. 66 1 }
  87. 67 //--------------------------------------------------------------------------------------------------------
  88. ----
  89. 68 void Start_Sending_SPI(UINT8 *pu8MID,UINT8 *pu8DID)
  90. 69 {
  91. 70 1 SS = 0;
  92. 71 1
  93. 72 1 SPDR = 0x90;
  94. 73 1 Timer3_Delay10us(1); // Send 0x90 to Slave
  95. 74 1 while(!(SPSR & SET_BIT7));
  96. 75 1 clr_SPIF;
  97. 76 1 if(SPDR != 0x4E)
  98. 77 1 SPI_Error();
  99. 78 1 printf ("\nSlave Return %c!\n",SPDR);
  100. 79 1
  101. 80 1 SPDR = 0x01; // Send 0x01 to Slave
  102. 81 1 Timer3_Delay10us(1);
  103. 82 1 while(!(SPSR & SET_BIT7));
  104. 83 1 clr_SPIF;
  105. 84 1 if(SPDR != 0x55)
  106. 85 1 SPI_Error();
  107. 86 1 printf ("\nSlave Return %c!\n",SPDR);
  108. 87 1
  109. 88 1 SPDR = 0x02; // Send 0x02 to Slave
  110. 89 1 Timer3_Delay10us(1);
  111. 90 1 while(!(SPSR & SET_BIT7));
  112. 91 1 clr_SPIF;
  113. 92 1 if(SPDR != 0x56)
  114. 93 1 SPI_Error();
  115. 94 1 printf ("\nSlave Return %c!\n",SPDR);
  116. 95 1
  117. 96 1 SPDR = 0x03; // Send 0x03 to Slave
  118. 97 1 Timer3_Delay10us(1);
  119. 98 1 while(!(SPSR & SET_BIT7));
  120. 99 1 clr_SPIF;
  121. 100 1 if(SPDR != 0x4F)
  122. 101 1 SPI_Error();
  123. 102 1 printf ("\nSlave Return %c!\n",SPDR);
  124. C51 COMPILER V9.53.0.0 SPI_MASTER_PO 08/20/2018 11:57:34 PAGE 3
  125. 103 1
  126. 104 1 SPDR = 0x04; // Send 0x04 to Slave
  127. 105 1 Timer3_Delay10us(1);
  128. 106 1 while(!(SPSR & SET_BIT7));
  129. 107 1 clr_SPIF;
  130. 108 1 if(SPDR != 0x54)
  131. 109 1 SPI_Error();
  132. 110 1 printf ("\nSlave Return %c!\n",SPDR);
  133. 111 1
  134. 112 1 SPDR = 0xFF;
  135. 113 1 Timer3_Delay10us(1);
  136. 114 1 while(!(SPSR & SET_BIT7));
  137. 115 1 clr_SPIF;
  138. 116 1 *pu8MID = SPDR; // Receive Slave 1st DATA from Slave
  139. 117 1 printf ("\nSlave Return %c!\n",SPDR);
  140. 118 1
  141. 119 1 SPDR = 0xFF;
  142. 120 1 Timer3_Delay10us(1);
  143. 121 1 while(!(SPSR & SET_BIT7));
  144. 122 1 clr_SPIF;
  145. 123 1 *pu8DID = SPDR; // Receive Slave 2nd DATA from Slave
  146. 124 1 printf ("\nSlave Return %c!\n",SPDR);
  147. 125 1
  148. 126 1 SS = 1;
  149. 127 1 }
  150. 128 //--------------------------------------------------------------------------------------------------------
  151. ----
  152. 129 void main(void)
  153. 130 {
  154. 131 1 UINT8 u8MID,u8DID;
  155. 132 1
  156. 133 1 Set_All_GPIO_Quasi_Mode;
  157. 134 1 InitialUART0_Timer1(115200); /* 9600 Baud Rate*/
  158. 135 1
  159. 136 1
  160. 137 1 SPI_Initial();
  161. 138 1
  162. 139 1 Start_Sending_SPI(&u8MID,&u8DID);
  163. 140 1
  164. 141 1 if((u8MID != 0x4F)&&(u8DID != 0x4E))
  165. 142 1 SPI_Error();
  166. 143 1
  167. 144 1 printf ("\nSPI Test OK!\n");
  168. 145 1 while(1); // SPI transmission finish and P0.6 flash
  169. 146 1 }
  170. 147 //--------------------------------------------------------------------------------------------------------
  171. ----
  172. MODULE INFORMATION: STATIC OVERLAYABLE
  173. CODE SIZE = 477 ----
  174. CONSTANT SIZE = 47 ----
  175. XDATA SIZE = ---- ----
  176. PDATA SIZE = ---- ----
  177. DATA SIZE = ---- 8
  178. IDATA SIZE = ---- ----
  179. BIT SIZE = ---- ----
  180. END OF MODULE INFORMATION.
  181. C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)