利用SCI做的一个足球答题系统

  SCI,异步串行通信接口,内置独立的波特率产生电路和SCI收发器,可以选择发送8或9个数据位(其中一位可以指定为奇或偶校验位)。

  SCI是全双工异步串行通信接口,主要用于MCU与其他计算机或设备之间的通信,几个独立的MCU也能通过SCI实现串行通信,形成网络。

  MC12里有两个SCI(SCI0和SCI1)。设计SCI串口通信程序,主要是掌握八个寄存器,设置好初始化。

  利用SCI做的一个足球答题系统   ,代码如下:

 1 /*******************************************************/

 2 /* 利用SCI做的一个足球答题系统 */

 3 /*******************************************************/

 4 #include <hidef.h> /* common defines and macros */

 5 #include <mc9s12dp256.h> /* derivative information */

 6 

 7 #pragma LINK_INFO DERIVATIVE "mc9s12dp256b"

 8 byte sci_data;  9 

 10 //中断初始化

 11 void SCI_Init(void)  12 {  13   SCI0BDL=0x34;             // 波特率控制寄存器 0011 0100

 14   SCI0CR2=0X2C;             // 控制寄存器2 0010 1100

 15 }  16 

 17 //发送子函数

 18 void SCI_Transmit(byte data)  19 {  20   while(!SCI0SR1_TDRE) ;  21   SCI0DRL=data;              //数据寄存器

 22 }  23 

 24 //接收子函数

 25 void SCI_Receive(byte *data)  26 {  27   *data=SCI0DRL;  28 }  29 

 30 //特定输出子函数

 31 void printf(char *str)  32 {  33   while(*str!='\r')  34  {  35     SCI_Transmit(*str);  36     *str++;  37  }  38 }  39 

 40 N0Choose(byte data)  41 {  42   switch(data)  43  {  44     case '1':  45  NO1();  46     break;  47     case '2':  48  NO2();  49     break ;  50     case '3':  51  NO3();  52     break;  53     case '4':  54  NO4();  55     break;  56     case '5':  57  NO5();  58     break;  59     default:  60     break;  61  }  62 }  63 

 64 /********************************************************/

 65 /* 主函数 */

 66 /********************************************************/

 67 void main(void)  68 {  69  SCI_Init();  70   printf("welcome to lipu's football-quiz system!\n\r");  71   printf("choose the problem number(1to5)\n\r");          //选择正确的问题号码1~5

 72   while(1)  73  {  74     while(!SCI0SR1_RDRF);  75     SCI_Receive(&sci_data);  76  SCI_Transmit(sci_data);  77  N0Choose(sci_data);  78  }  79 }  80 

 81 

 82 void Right(void)  83 {  84   printf("\nyou are RIGHT.\nchoose the next question\n\r");}  85   void Wrong(void){  86   printf("\nyou are WRONG.\nchoose the next question\n\r");}  87   int NO1(void)  88  {  89     printf(".which country is the champion of World Cup at 2006?\n\r") ;  90     printf("A:Brazil B:Italy\n\r");  91     

 92     while(!SCI0SR1_RDRF);  93       SCI_Receive(&sci_data);  94  SCI_Transmit(sci_data);  95     switch(sci_data)  96  {  97       case 'A':  98  Wrong();  99       break; 100       case 'B': 101  Right(); 102       break; 103       default: 104       break; 105  } 106  } 107   

108 int NO2(void) 109 { 110   printf(".which country have the most champions of World Cup?\n\r") ; 111   printf("A:Brazil B:Italy\n\r"); 112   while(!SCI0SR1_RDRF); 113   SCI_Receive(&sci_data); 114  SCI_Transmit(sci_data); 115   switch(sci_data) 116  { 117     case 'B': 118  Wrong(); 119     break; 120     case 'A': 121  Right(); 122     break; 123     default: 124     break; 125  } 126 } 127 

128 int NO3(void) 129 { 130   printf(".which club is the champion of Spanish Prinera Divison at 06-07\n\r") ; 131   printf("A:Barcelona B:Real Madrid\n\r"); 132   while(!SCI0SR1_RDRF); 133   SCI_Receive(&sci_data); 134  SCI_Transmit(sci_data); 135   switch(sci_data) 136  { 137     case 'A': 138  Wrong(); 139     break; 140     case 'B': 141  Right(); 142     break; 143     default: 144     break; 145  } 146 } 147 

148 int NO4(void) 149 { 150   printf(".which club is the champion of Italian Serie A at 06-07\n\r") ; 151   printf("A:Inter Milan B:AC.Milan\n\r"); 152   while(!SCI0SR1_RDRF); 153   SCI_Receive(&sci_data); 154  SCI_Transmit(sci_data); 155   switch(sci_data) 156  { 157     case 'B': 158  Wrong(); 159     break; 160     case 'A': 161  Right(); 162     break; 163     default: 164     break; 165  } 166 } 167 

168 int NO5(void) 169 { 170   printf(".who is the FIFA World Player at 2006\n\r") ; 171   printf("A:Henry B:Ronaldiaho\n\r"); 172   while(!SCI0SR1_RDRF); 173   SCI_Receive(&sci_data); 174  SCI_Transmit(sci_data); 175   switch(sci_data) 176  { 177     case 'B': 178  Wrong(); 179     break; 180     case 'A': 181  Right(); 182     break; 183     default: 184     break; 185  } 186 }
zuqiu_dati.c

 

你可能感兴趣的:(系统)