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

简介:   SCI,异步串行通信接口,内置独立的波特率产生电路和SCI收发器,可以选择发送8或9个数据位(其中一位可以指定为奇或偶校验位)。   SCI是全双工异步串行通信接口,主要用于MCU与其他计算机或设备之间的通信,几个独立的MCU也能通过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

 

相关文章
|
2月前
|
Python
【10月更文挑战第7天】「Mac上学Python 15」小学奥数篇1 - 如何平分6个苹果和4个橘子
本篇将通过 Python 和 Cangjie 双语讲解一个简单的数学题:如何平分 N 个苹果和 M 个橘子。这道题旨在锻炼初学者的逻辑思维,并学会使用编程解决实际问题。
92 1
【10月更文挑战第7天】「Mac上学Python 15」小学奥数篇1 - 如何平分6个苹果和4个橘子
牛客竞赛17633 阿狸的打字机
牛客竞赛17633 阿狸的打字机
PTA团体程序设计天梯赛-练习集 L2 网红点打卡攻略(模拟)
PTA团体程序设计天梯赛-练习集 L2 网红点打卡攻略(模拟)
176 0
|
Java
编写Java程序,模拟教练员和运动员出国比赛场景,其中运动员包括乒乓球运动员和篮球运动员。教练员包括乒乓球教练和篮球教练。为了方便出国交流,根乒乓球相关的人员都需要学习英语。
编写Java程序,模拟教练员和运动员出国比赛场景,其中运动员包括乒乓球运动员和篮球运动员。教练员包括乒乓球教练和篮球教练。为了方便出国交流,根乒乓球相关的人员都需要学习英语。
317 0
编写Java程序,模拟教练员和运动员出国比赛场景,其中运动员包括乒乓球运动员和篮球运动员。教练员包括乒乓球教练和篮球教练。为了方便出国交流,根乒乓球相关的人员都需要学习英语。
基于树莓派的桌上足球计分器
树莓派官方杂志MagPi 第74期翻译 翻译:子豪兄(同济大学) 加入翻译组或相关合作请关注微信公众号MagPi ,私聊后台 欢迎各论坛网站公众号分享转载,请以 原文超链接或链接形式 转载并注明出处 子豪兄。
1239 0
|
Linux NoSQL Java
biostar handbook: 第二周笔记汇总+第三周任务布置
第二周已经结束了,我不确定大家对Linux到底了解到了什么程度,但是我觉得再给一周时间让初学者去熟悉Linux肯定是必要的。于是这一周的任务不会太难,只需要让大家去理解本体论(ontology)。
1030 0
|
Unix Linux Shell
biostar handbook: 第一周笔记汇总+第二周任务布置
第一周笔记汇总 昨天和一位也在自学生信的同学交流自学的心境,他在我的唆使之下也在简书更新自己的笔记,可以搜索小郑的学习笔记。期间,他说道 非常庆幸自己能够坚持把自己学到的知识和困惑以文字的形式记录下来。
1292 0
|
关系型数据库 RDS Perl
[家里蹲大学数学杂志]第388期一套泛函分析期末试题参考解答
  1. ($20$ 分) 证明非线性积分方程 $$\bex x(t)+\lm \int_a^b K(t,s,x(s))\rd s=y(t),\quad \forall\ t\in [a,b] \eex$$ 在 $|\lm|$ 足够小时有唯一连续解.
1049 0
|
关系型数据库 Perl RDS
[家里蹲大学数学杂志]第322期赣南师范学院数学竞赛培训第11套模拟试卷
  数学分析部分     1. 已知函数 $f(x)=\ln x-ax$, 其中 $a$ 为常数. 如果 $f(x)$ 有两个零点 $x_1,x_2$. 试证: $x_1x_2>e^2$.
682 0
|
Perl
赣南师范学院数学竞赛培训第08套模拟试卷参考解答
1. 设 $A,B$ 为 $n$ 阶方阵, $\rank(A)0 \eea \eeex$$ 知 $$\bex \exists\ 0\neq \gamma\in V_1\cap V_2,\st |\gamma|=1.
713 0