久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1763|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

在Stc單片機(jī)上利用串口實(shí)現(xiàn)人機(jī)交互例(改編自KEIL C51 V7.0)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1045827 發(fā)表于 2022-9-25 18:05 | 只看該作者 回帖獎勵(lì) |倒序?yàn)g覽 |閱讀模式
//在Stc單片機(jī)上利用串口實(shí)現(xiàn)人機(jī)交互例(改編自KEIL C51 V7.0)
#include"STC8AXX.h"
#include<stdio.h>
#include"types.h"
#include"Qport.h"
#include"delay.h"

#define uchar  unsigned char
#define uint   unsigned int       
#define FOSC    11059200UL
#define BAUD1                9600UL
#define BRT1    (65536 - FOSC / BAUD1 / 4)                                //FEE0


uchar code *s ="Please input the following commands:\n"
                 "Inport  p         (read port)\n"
                "Outport p nnn         (write port)\n"
                " where p=0..3, nnn=0..255\n"
                 "Help or ?  (display this text)\n";


uchar help(){
  printf( "\n%s\n", Q );
  return 0;
}


uchar Inport( uchar idata *rbuf ) {
           uint p;
                uchar v;
          if( sscanf( rbuf, "%i", &p ) != 1 )
    return 1;                                                                               
                    case 0: v=P0; break;               
                    case 1: v=P1; break;               
                    case 2: v=P2; break;               
                    case 3: v=P3; break;               
                    case 4: v=P4; break;               
                    case 5: v=P5; break;               
                    case 6: v=P6; break;               
                    case 7: v=P7; break;               

        default: return 2;                       
          }
          printf( "Port P%d = %02X\n", p, (uint)v );
          return 0;
}


uchar Outport( uchar idata *rbuf ) {
          uint p, v;
          if( sscanf( rbuf, "%i%i", &p, &v ) != 2 )
                    return 1;                                       
          switch( p ){
                    case 0: P0=v; break;                                               
                    case 1: P1=v; break;                                               
                    case 2: P2=v; break;                                               
                    case 3: P3=v; break;                                               
                    case 4: P4=v; break;                                               
                    case 5: P5=v; break;                                               
                    case 6: P6=v; break;                                               
                    case 7: P7=v; break;                                               

                        default: return 2;                                                       
          }
          return 0;
}


void main( void ) {
uchar idata buf[41];

        uchar elevel;
        uchar mjs;
        Qport_init();                                                                                               

//SCON:SM0 SM1 SM2 REN TB8 RB8 TI RI
//      0   1   0   1   X   X   1  0
        SCON = TI_+REN_+SM1_;                                                                //0x52

//TMOD: T1_GATE  T1_C/T  T1_M1 T1_M0 T1_GATE  T0_C/T  T0_M1  T0_M0
//         0        0      0     0     0        0       0      0
//
  TMOD = 0x00;
//AUXR: T0x12 T1x12        UART_M0x6  T2R T2_C/T T2x12 EXTRAM S1ST2
//        1     1        0       0    0     0      0     0

        AUXR = 0xc0;
        TL1 = BRT1;
  TH1 = BRT1 >> 8;
  TR1 = 1;                               


        for(;;){

//                if(!P30) IAP_CONTR=0x60;                                                                                                                                               
//                        WDT_CONTR|=0x10;                                                                       

                        for(mjs=0;mjs<=2;mjs++){
                                        DelayMs(200);
//                                        LED1=!LED1;
                                        LED2=!LED2;
                                        LED3=!LED3;
//                                        LED4=!LED4;
                                                }

                                        help();                                                                                                                       
                                        putchar('>');
                                        gets(buf,20);                                                       
                                        switch( elevel = command( buf ) ){       
                                                case 0: break;
                                                default: printf( "Error %d\n\n", (uint)elevel );}
                }
        }

//命令解析       
#include<stdlib.h>
#include<types.h>

typedef struct {
          uchar code *name;
          uchar (code *func)(uchar idata *);
}comm_struct;


comm_struct code comm_tab[] = {                       
                "Inport", Inport,
                "Outport", Outport,
                "help", help,
                "?", help,
                "", NULL                                                       
};


uchar command( uchar idata *buf ) {
          uchar i, j;                                       
          for( i = 0;; )
                    for( j = 0;; ){
                      if( comm_tab[i].name[j] != 0 ){
        if( ((comm_tab[i].name[j] ^ buf[j]) & 0x5F) == 0 ){
                                  j++;
                                                  continue;                               
                         }
                                i++;
        break;                                 
                      }
                      if( j == 0 )        return 255;                       
                      return comm_tab[i].func( buf+j );       
                    }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1045827 發(fā)表于 2022-9-25 18:08 | 只看該作者
需要詳細(xì)的工程文件,可以我;利用串口調(diào)試軟件進(jìn)行調(diào)試時(shí),應(yīng)輸入如:inport 3\n這樣的命令。
回復(fù)

使用道具 舉報(bào)

板凳
ID:467178 發(fā)表于 2022-10-5 16:22 | 只看該作者
大俠能幫我看看這個(gè)問題嗎?謝謝你呀http://www.zg4o1577.cn/bbs/dpj-223490-1.html
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一级免费在线视频 | av免费网址 | 久久在线 | 欧美乱淫视频 | 亚洲成人免费观看 | 亚洲精品一区二区 | 国产欧美日韩综合精品一区二区 | 夜夜夜久久 | www.日本在线播放 | 久久久www成人免费精品 | 久久久久久国 | 欧美一区二区三区在线 | 欧美一区二区免费电影 | 久久999 | 国产日韩一区二区三区 | 97精品国产97久久久久久免费 | 国产伦一区二区三区视频 | 午夜资源 | 懂色中文一区二区在线播放 | 国产精品夜间视频香蕉 | 91视频正在播放 | 日日夜夜91 | 中文字幕在线观看一区 | 九九久久在线看 | 亚洲永久免费观看 | 免费看国产片在线观看 | 成人亚洲精品 | 99视频在线免费观看 | 自拍偷拍欧美 | 在线国产一区二区三区 | 久久精品一 | 国产在线精品一区二区 | 国产日韩中文字幕 | 日韩美女在线看免费观看 | 国产乱码久久久久久一区二区 | 一区二区三区四区在线免费观看 | 亚洲精品久久久一区二区三区 | 黄色在线观看国产 | 91精品在线播放 | 伊人在线| 国产最新网址 |