📄 baudrate.cpp
字号:
//*------------------------------------------------------*/
//* Cexp6.cpp(波特率时钟发生器接口实验) */
//* 波特率时钟发生器程序Source File */
//* Copyright (c) 2001 by HUST */
//*------------------------------------------------------*/
#include <conio.h> //kbhit();
#include <stdio.h> //printf();
//定时常数数组
int tc_table[8]={
678, // 0=110bps
497, // 1=150b/s
249, // 2=300b/s
124, // 3=600b/s
62, // 4=1200b/s
31, // 5=2400b/s
16, // 6=4800b/s
8 // 1=9600b/s
};
void main()
{
int getvalue=0;
int temp=-1;
int sendhigh=0;
int sendlow=0;
outportb(0x307,0xb6); //init 8253
outportb(0x303,0x80); //init 8255
outportb(0x303,0x0c); //close 8253???
for(;;)
{
clrscr();
printf("please select baudrate\n 0---110\n 1---150\n 2---300\n 3---600\n 4---1200\n 5---2400\n 6---4800\n 7---9600\n");
getvalue=getch();
if((getvalue<'0') || (getvalue>'7'))
{
if(getvalue==0x1b)//ESC返回
{
return;
}
printf("\n Input error! try again please! \n"); //error message
getch();
continue;
}
else
{
break;
}
}
temp = getvalue - '0';
sendhigh = tc_table[temp] & 0xff00;
sendlow = tc_table[temp] & 0x00ff;
outportb(0x306,sendlow);//装入计数初值低字节
outportb(0x306,sendhigh);//装入计数初值高字节
printf("\n Now begin to generate baud-rate's clk! \n Hit ESC to quit!\n"); //提示信息
outportb(0x303,0x0d);//使PC6=1,启动8253,产生波特率时钟
for(;;)
{
if(kbhit())
{
if(getch()==0x1b)//检测是否是Esc键
{
outportb(0x303,0x0c); //关闭8253
return;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -