⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 这是《Keil Cx51 V7.0单片机高级语言编程与uVision2应用实践》教材各章中列出的全部程序例子。
💻 C
字号:
#include<reg51.h>
#include<stdio.h>
#include"types.h"

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", s );
  return 0;
}

/*********************** 单片机I/O口输入命令函数 **************************
* 功能:输入单片机P0~P3口的状态
* 命令格式:Inport p,其中参数 p = 0~3 为端口号
*************************************************************************/
uchar inport( uchar idata *buf ) {
   	uint p;
  uchar v;
  	if( sscanf( buf, "%i", &p ) != 1 )
    return 1;					// 命令中缺少端口参数则返回错误号1
switch( p ){
    		case 0: v = P0; break;		// 输入P0状态
    		case 1: v = P1; break;		// 输入P1状态
    		case 2: v = P2; break;		// 输入P2状态
    		case 3: v = P3; break;		// 输入P3状态
    		default: return 2;			// 端口参数超出范围则返回错误号2
  	}
  	printf( "Port P%d = %02X\n", p, (uint)v );  
  	return 0;
}

/*********************** 单片机I/O口输出命令函数 **************************
* 功能:从单片机P0~P3口输出给定值
* 命令格式:Outport p nnn,其中参数p = 0~3为端口号,nnn为输出给定值0~255
**************************************************************************/
uchar outport( uchar idata *buf ) {
  	uint p, v;
  	if( sscanf( buf, "%i%i", &p, &v ) != 2 )
    		return 1;					// 命令中缺少端口参数则返回错误号1
  	switch( p ){
    		case 0: P0 = v; break; 		// 从P0口输出给定值
    		case 1: P1 = v; break; 		// 从P1口输出给定值
    		case 2: P2 = v; break; 		// 从P2口输出给定值
    		case 3: P3 = v | RXD_ | TXD_; break; // 从P3口输出给定值
    		default: return 2;			// 端口参数超出范围则返回错误号2
  	}
  	return 0;
}

/********************************* 主函数 ********************************
* 功能:初始化单片机串行口,等待从串行口输入命令并调用命令处理函数
**************************************************************************/
void main( void ) {
  	uchar idata buf[21];
  	uchar elevel;

  	PCON |= SMOD_;					// 初始化单片机的串行口UART
  	SCON = TI_ + REN_ + SM1_;
  	TMOD = T1_M1_;
  	TH1 = (uchar) -(0.5 + XTAL / 12.0 / 16 / BAUD);
  	TL1 = -1;
  	TR1 = 1;

  	for(;;){
  		help();						// 输出帮助提示信息
    		putchar('>');
    		gets( buf, 20 );				// 等待从串行口输入命令
    		switch( elevel = command( buf ) ){	// 根据输入值调用命令处理函数
      		case 0: break;
      		default: printf( "Error %d\n\n", (uint)elevel );
    		}
  	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -