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

📄 acsimulator.cpp

📁 本书通过实例介绍了嵌入式编程的方法与技巧书中例子具有实用性
💻 CPP
字号:
#include "stdio.h"
#include "conio.h"
#include <windows.h>

int Receiver(void);
long baseAdd,LSB,MSB,dataFormat,temp;

main()
{
	long baseAdd,LSB,MSB,dataFormat,temp;
	HANDLE hThread;
	DWORD tid;

	baseAdd = 0x2f8; // address for comm port 2
	
	LSB = 0x0c; // for baudrate 9600
	MSB = 0x00;

	dataFormat = 0x03; // for 8,1,N

	_outp(baseAdd+3,dataFormat); // setting dataformat register

	temp = _inp(baseAdd+3);
	temp = temp | 0x10;
	_outp(baseAdd+3,temp); //setting DLAb bit to 1

	_outp(baseAdd,LSB);    // setting Baud Rate
	_outp(baseAdd+1,MSB);

	temp = _inp(baseAdd+3);
	temp = temp & 0x7f;
	_outp(baseAdd+3,temp); //Resetting DLAb bit to 1

	hThread = CreateThread(0, 
                           0,
                           (LPTHREAD_START_ROUTINE) Receiver,
                           0,
                           0,
                           &tid);
	printf("Press Enter to terminate");
	getch();
	TerminateThread(hThread,0);
	

}

int Receiver(void)
{
	char ch,data[4];
	int length;
	
	while(1)
	{
		while(!(_inp(baseAdd+5)&0x01));
		ch = _inp(baseAdd);
		
		if(ch==0x02) // STX 
		{
			while(!(_inp(baseAdd+5)&0x01));
			length = _inp(baseAdd);
			for(int i=0;i<(length-2);i++)
			{
				while(!(_inp(baseAdd+5)&0x01));
				data[i] = _inp(baseAdd);
			}
			data[i] = '\0';
			if(length == 0x05)
			{
				switch(data[0])
				{
				case 'N':
					printf("\nCommand for Switching On");
					break;
				case 'F':
					printf("\nCommand for Switching Off");
					break;
				default:
					printf("\nCommand to set the Temperature to %d",data[0]);
					break;
				}
			}
			else
			{
				printf("\nCommand to set the timer to %d:%d:%d",data[0],data[1],data[2]);
			}
			
		}

	}
	return 1;
}

⌨️ 快捷键说明

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