チーム1646

課題名

四則演算

研究者名

Kei Imachi
Shu Inagi

概要[#a6651ac0]

キーボードから演算子と数値を入力し、計算結果を出力する。

仕様[#z06ef467]

ソースコード

#include <m8c.h> // part specific constants and macros
#include<stdio.h>
#include<stdlib.h>
#include "PSoCAPI.h" // PSoC API definitions for all User Modules


void main(void)
{
  // M8C_EnableGInt ; // Uncomment this line to enable Global Interrupts
   // Insert your main routine code here.
   char*strPtr;
   int i,a,sum,para;
   UART_CmdReset();
   UART_IntCntl(UART_ENABLE_RX_INT);
   Counter8_WritePeriod(155);
   Counter8_WriteCompareValue(77);
   Counter8_Start();
   UART_Start(UART_PARITY_NONE);
   M8C_EnableGInt;
   UART_CPutString("四則演算\r\n");

  while(1){
       if(UART_bCmdCheck()){
           UART_CPutString("choose command +,-,*,/,\r\nCommand=>");
           if(strPtr=UART_szGetParam()){
               i=0;
               sum=0;
               UART_PutString(strPtr);
               UART_CPutString("<\r\nParamaters:\r\n");
               if(*strPtr=='+')
                   para=1;
               if(*strPtr=='-')
                   para=2;
               if(*strPtr=='*')
                   para=3;
               if(*strPtr=='/')
                   para=4;
               while(strPtr=UART_szGetParam()){
                   UART_CPutString(" <");
                   UART_PutString(strPtr);
                   a=atoi(strPtr);
                   if(i==0)
                       sum=a;
                   if(i!=0){
                       if(para==1)
                           sum=sum+a;
                       if(para==2)
                           sum=sum-a;
                       if(para==3)
                           sum=sum*a;
                       if(para==4)
                           sum=sum/a;
                   }
                   UART_CPutString(">\r\n");
                   itoa(strPtr,sum,10);
                   UART_CPutString("sum=");
                   UART_PutString(strPtr);
                   UART_CPutString("\r\n");
                   i=i+1;
               }
           }
           UART_CmdReset();
       }
   }
}
説明
これは課題uart_1で使ったシリアルポート通信を利用し、TeraTermの画面に出力している。
キーボードから演算子といくつかの数値の入力を待って入力が入ってきたら、
その演算子の計算を行って実行結果を出力するようになっている。

実行結果[#v525b1bc]

tasizann.png
hikizannpng.png
kakezann.png
warizann.png

考察

今回の課題では、第二回の時に行ったuart1のプロジェクトを参考に作成を開始した。
また、キーボードからの文字の入力を数字に変換するためにソフトウェアー実習の時に学習した、atoi関数を用いて行い、数値をPC上に文字として出力するためにitoa関数も用いた。
キーボードから入力された演算子については、それぞれに数字を割り振っておき区別できるようにしてある。四則演算を行ってく際には、一回目の数値は、二回目以降の数値と計算方法が違うので場合分けを行っている。
ある程度の計算は、これで行うことが出来たが、たまにmain.cで書いてあること以外のことが起こってしまったりしていたので、もう少し改善できる部分があったと思う。

  • 最終更新:2016-10-18 13:56:23

このWIKIを編集するにはパスワード入力が必要です

認証パスワード