#include
#include
#define FOSC 18432000L
#define BAUD 9600
typedef unsigned char BYTE;
typedef unsigned int WORD;
sbit led=P1^0;
sbit key1=P3^4;
sbit key2=P3^5;
BYTE code table[]={3,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40}; sfr ADC_CONTR=0xbc; //ADC控制寄存器
sfr ADC_RES=0xbd; //ADC转换结果寄存器
sfr ADC_LOW2=0xbe; //ADC转换结果寄存器
sfr P1ASF=0x9d; //模拟功能控制寄存器
#define ADC_POWER 0x80//电源控制位
#define ADC_FLAG 0x10; //模数转换标志位
#define ADC_START 0x08; //模数转换器转换器启动控制位
#define ADC_SPEEDLL 0x00; //AD转换所用的时间90个时钟周期转换#define ADC_SPEEDL 0x20; //180个时钟周期转换
#define ADC_SPEEDH 0x40; //360个
#define ADC_SPEEDHH 0x60; //540个
void InitUart();
void InitADC();
void SendData(BYTE dat);
BYTE GetADCResult(BYTE ch);
void Delay(WORD n);
void keyscan();
void showresult(BYTE ch);
BYTE t1=0,t2=0,cl=1,i,c,a;
WORD aa,num,t0,flgh;
void delay(WORD z)
{
WORD i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
InitUart();
InitADC();
while(1)
{
keyscan();
if(flgh==1)
{
flgh=0;
ES=0;
TI=1;
SBUF=GetADCResult();
while(!TI);
TI=0;
ES=1;
}
}
}
BYTE GetADCResult(BYTE ch)
{
ADC_CONTR=0xC0;
_nop_();
_nop_();
_nop_();
_nop_();
P1ASF=0x00;//选择P1.0作为A/D转换通道
ADC_CONTR|=0x08;//启动A/D转换
while((ADC_CONTR&0x10)==0);//等待A/D转换结束ADC_CONTR&=0xE7;
return(ADC_RES);
}
void InitUart()
{
SCON=0x5a;
TMOD=0x21;
TH0=(65536-45872)%256;
TL0=(65536-45872)/256;
TH1=TL1=-(FOSC/12/32/BAUD);
TR1=1;
ET0=1;
REN=1;
TR0=1;
SM0=0;
SM1=1;
EA=1;
ES=1;
}
void InitADC()
{
P1ASF=0xff;
ADC_RES=0;
ADC_CONTR=0x80;
Delay(2);
}
void keyscan()
{
if(key1==0)
{
delay(10);
if(key1==0)
{
cl++;
num=table[cl];
while(!key1);
}
}
if(key2==0)
{
delay(10);
if(key2==0)
{
cl--;
num=table[cl];
while(!key2);
}
}
}
void ser()interrupt 4
{
RI=0;
a=SBUF;
c=1;
}
void timer_1() interrupt 3
{
TL1 = 0x3c; //200us
TH1 = 0xff;
t1++;
t2++;
if(t1 <= cl)
led = 0; //这三行通过t1与cl比较,控制led亮灭,也就是PWM调光。
if(t1 > cl)
led = 1;
if(t1 == 50) t1 = 0; //
if(t2 ==250) //250次中断以后,进入以下语句,更改cl值,改变亮度。改变比较的值(250)
{ //可以调整闪烁速度。
t2=0;
if(c)
{
if(cl == num)
{
ES=0;
TI=1;
SBUF=cl;
while(!TI);
TI=0;
ES=1;
GetADCResult(cl);
c=0; //由亮变暗标识
}
}
if(cl==3)
{
ES=0;
TI=1;
SBUF=cl;
while(!TI);
TI=0;
ES=1;
GetADCResult(cl);
c=1;
}
}
}
void timer0() interrupt 1
{
TH0=(65536-45872)%256;
TL0=(65536-45872)/256;
t0++;
if(t0==10)
{
t0=0;
flgh=1;
} }
C 语言 课程设计报告 设计题目:进制转换 学生姓名: 学生学号:20101010110 专业班级:数学与应用数学一班 学院名称:数学与计量经济学院 同组人姓名: 指导老师: 2011年6 月16 日
目录 1.需求分析........................................................1 1.1问题描述....................................................1 1.2输入数据的要求..............................................1 1.3输出数据的要求..............................................1 1.4开发环境和工具..............................................1 1。.5成员分工...................................................1 2.总体设计........................................................2 2.1设计思路...................................................3 2。.2模块结构图...............................................4 3.详细设计........................................................7 3.1数据类型的定义...............................................7 3.2总的实现......................................................8 4.系统测试........................................................9 5.总结...........................................................·10 6.参考文献及附录............................................11
一个c语言的串口通信程序范例 分类:技术笔记 标签: c语言 串口通信 通信程序 it 最近接触一个项目,用HL-C1C激光位移传感器+易控组态软件完成生产线高度跳变检测,好久没有接触c c#,一些资料,找来做个记录,也许大家用的着 #include
static void interrupt far AsyncInt(void); void Init_COM(int ComPortAddr, unsigned char IntVectNum, int Baud, unsigned char Data, unsigned char Stop, unsigned char Parity) { unsigned char High,Low; int f; comportaddr=ComPortAddr; intvectnum=IntVectNum; CharsInBuf=0;CircIn=0;CircOut=0; f=(Baud/100); f=1152/f; High=f/256; Low=f-High*256; outp(ComPortAddr+3,0x80); outp(ComPortAddr,Low); outp(ComPortAddr+1,High); Data=(Data-5)|((Stop-1)*4); if(Parity==2) Data=Data|0x18; else if(Parity==1) Data=Data|0x8; outp(ComPortAddr+3,Data); outp(ComPortAddr+4,0x0a);
#include
if(k==1) { for(i=j+1;i c语言串口通信范例 This manuscript was revised by the office on December 22, 2012 一个c语言的串口通信程序范例 标签:分类: 最近接触一个项目,用HL-C1C激光位移传感器+易控组态软件完成生产线高度跳变检测,好久没有接触c c#,一些资料,找来做个记录,也许大家用的着 #include <> #include <> #include <> #include <> #define COM232 0x2f8 #define COMINT 0x0b #define MaxBufLen 500 #define Port8259 0x20 #define EofInt 0x20 static int comportaddr; static char intvectnum; static unsigned char maskb; static unsigned char Buffer[MaxBufLen]; static int CharsInBuf,CircIn,CircOut; static void (interrupt far *OldAsyncInt)(); static void interrupt far AsyncInt(void); void Init_COM(int ComPortAddr, unsigned char IntVectNum, int Baud, unsigned char Data, unsigned char Stop, unsigned char Parity) { unsigned char High,Low; int f; comportaddr=ComPortAddr; intvectnum=IntVectNum; CharsInBuf=0;CircIn=0;CircOut=0; f=(Baud/100); 十六进制数转换成十进制数C语言 程序代码: #include 索引 一、算法分析 二、数据结构: 1、头文件 2、栈的关键操作 三、关键程序: 1、十进制进制转换为其它 2、其它进制转换为十进制 一、算法分析 实现进制转换需要编个函数,每一函数完成相应进制的转换,下面是各个进制之间转换的数学方法的算法。 十进制转二进制: 十进制数转换成二进制数,是一个连续除2的过程;把要转换的数,除以2,得到商和余数,将商继续除以2,直到商为0.最后将所有余数倒序排列,得到数就是转换结果。 例如: 302/2 = 151 余0 151/2 = 75 余1 75/2 = 37 余1 37/2 = 18 余1 18/2 = 9 余0 9/2 = 4 余1 4/2 = 2 余0 2/2 = 1 余0 所以302转换为2进制,结果:100101110 十进制转八进制: 十进制数转换成八进制的方法和转换为二进制的方法类似,唯一变化:除数由2变成8。 例如: 120/8=15余0 15/8=1余7 1/8=0余1 所以120转换为8进制,结果为:170 十进制转十六进制: 十进制数转换成十六进制数的方法和转换为二进制的方法类似,唯一变化:除数由2变成16。 不过,十六进制数:(10~15)是用英文大写字母(A~F)表示。例如: 123/16=7余11 所以123转换为16进制,结果为:7B 二进制转十进制: 二进制数转换为十进制数按权展开,第0位的权值是2的0次方,第1位的权值是2的1次方〃〃〃〃〃〃 例如: 1010转换成十进制数: 第0位:0*2^0=0 第1位:1*2^1=2 第2位:0*2^2=0 第3位:1*2^3=8 所以转换为10进制数为:0+2+0+8=10 二进制转八进制: 利用421,从后往前每三位一组,缺位除补0,然后按十进制方法进行转换。 例如: (11001) 001=1 011=3 然后将结果按从下往上顶顺序书写:31 二进制转十六进制: 二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算;利用8421,对于任意一个4位的二进制数,都可以很快算出它对应的10进制值。 例如: 1111=8+4+2+1=15 又因为十六进制数:10~15用大写字母A~F表示,所以15为F。 C任意进制转换程序 C语言写的一个任意进制转换的程序,不使用库提供的转换函数. / scale.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include #include #include #define WIDTH 10 #define DATAWIDTH 50 #define MAX 4294967295 #define CONST_2 2 #define CONST_3 3 #define CONST_8 8 #define CONST_9 9 #define CONST_10 10 #define CONST_16 16 #define CHAR_0 '0' #define CHAR_9 '9' #define CHAR_A 'A' #define CHAR_a 'a' #define CHAR_Z 'Z' #define CHAR_SPACE ' ' #define STRING_0 "0" #define STRING_Z "Z" bool Scale(); bool GetSourceScale(int * scale_in); bool GetObjectScale(int * scale_out); double OtherToDeci(int scale_in,char inputdata[]); void DeciToOther(unsigned long deci,int scale_out,char outputdata[]); bool GetData(char data[],int CONCOUNT,int flg); bool GetScale(char temp[]); bool GetSource(int in_scale,char inputdata[]); void ScaleChange(int scale_in,char inputdata[],int scale_out,char outputdata[]); void CleanScreen(); int _tmain(int argc, _TCHAR* argv[]) { int flg = 0; char cs[WIDTH]; memset(cs,0x00,sizeof(cs)); while(1) { printf("-----------------------------------------------------------------\n" ); printf(" Data Transform Between Two Scales \n"); printf(" ----------------------------------------\n"); /*进制转换主函 (C语言)10进制转换2,8,16进制 作者:vinseven #include"stdio.h" #include"conio.h" #include"malloc.h" #include"windows.h" #define ElemType int void menu(); void TenToTwo(); void TenToEight(); void TenToSixteen(); void InitStack(struct sNode **HS); void Push(struct sNode **HS,ElemType x); ElemType Pop(struct sNode **HS); ElemType Peek(struct sNode **HS); int EmptyStack(struct sNode **HS); void ClearStack(struct sNode **HS); int ten;/*要输入的10进制数*/ int x;/*把将要插入到栈中的元素暂时存进x 中*/ struct sNode hs; struct sNode { ElemType data; struct sNode *next; }; void main() { menu(); getch(); } void menu() { char choice; int flag=1; while(1) { printf("\n\t\t\t________________________\n\n\n"); printf("\t\t\t 1,10进制转换2进制\n\n\n"); printf("\t\t\t 2,10进制转换8进制\n\n\n"); printf("\t\t\t 3,10进制转换16进制\n\n\n"); printf("\t\t\t 0,退出\n\n\n"); void main() { delayms(100); init(); //初始化系统 delayms(100); init_wdt(); //初始化看门狗 while(1) { while(!RI_0) //是否收到数据 { clr_wdt(); } RI_0=0; //清除接收中断标志 buffer=S0BUF; if(buffer==0x5a) //检测祯头0 start0=1; if(buffer==0x54) //检测祯头1 start1=1; if(buffer==0x5a) //检测祯尾0 end0=1; if(buffer==0xfe) //检测祯尾1 end1=1; if((start0==1)&(start1==1)) { buff[i]=buffer; //从祯头1开始存储数据 i++; } if((end0==1)&(end1==1)) //是否已经接收祯尾 { count=i; //数据长度为count个 i=1; if((buff[2]==0x03)&(count==107)) //是否422指令 { buff[0]=0x5a; //重填祯头0 buff[count-4]=0; //校验和清零 for(k=2;k<(count-4);k++) //计算校验和 { buff[count-4]+=buff[k]; } for(k=0;k S0BUF=buff[k]; while(!TI_0); //等待发送完成 TI_0=0; //清除发送中断标志 } reset(); } else if((buff[2]==0x05)&(count==7)) //是否AD测试指令 { sendad(); reset(); } else if((buff[2]==0x18)&(count==7)) //是否发送时序信号指令 { sendpaulse(); reset(); } else //如果接收错误,则恢复各标志位为初始状态以便下次接收 { reset(); } } } } void reset() { start0=0; //祯头祯尾标志位清零 start1=0; end0=0; end1=0; for(k=0;k 用C语言编写串口程序 在当今,流行的编程软件种类繁多,它们编程方便、易于维护,但是在与硬 件直接打交道和编制系统软件时却束手无策,于是C语言就有了用武之地。C语言作为汇编语言与高级语言之间的一种过渡语言,兼有汇编语言的高效和高级语言 的方便。 在通讯中,为了保证行运安全可靠,标准的串行口必须具有许多握手信号和 状态信息。这是因为通讯的各个计算机CPU速度不一样(这会导致“错帧”)以 及发送机发送数据速度比接收机接收速度快(这会导致“过冲”)。为解决这个 问题,我们采用一个简单的握手信号,即发送机每次仅发送半个字节(低4位) 的数据,而另外半个字节(高4位)则用来传送信息。我们可以对信息位(高4位)进行如下简单的编码: 0H:发送的是新的半个字节数据 1H:重新发送上次传送错误的数据 2H:文件名结束 3H:文件结束 这样,每当发送机发送一个字节以后,就等待接受机发回送信号,这回送信号就 是发送机发送过来的那个字节。发送机接收到回送信号后,把它与刚发送的字节 相比较,如果相同,就发送新的半个字节,否则就重新发送。新数据与旧数据通 过信息位来区分。下面就是用C语言编写控制串行口的程序。 #include "dos.h" #include "stdlib.h" #include "stdio.h" #define PORT 0 void SendFile(char *fname); /* 发送文件*/ void Send(int s); /*发送一个字节*/ void SendFileName(char *fname); /*发送文件名*/ void ReceiveFile(); /*接收文件*/ void GetFileName(char *f); /*接收文件名*/ void InitPort(int port,unsigned char para); /*初始化端口*/ void SendPort(int port,char c); /*端口发送*/ int ReadPort(int port); /*读端口字节*/ int CheckState(int port); /*检查端口状态*/ int Receive(int port,int *G); /*接收一个字节*/ main(int argc,char *argv[]) { if(argc<2){ printf("Please input R(receive) or S(sent) parametre:"); exit(1); } //用顺序栈来实现进制转换 #include 该程序全部由C写成没有C++ 更没用MFC 完全是自娱自乐给需要的人一个参考 #include "stdafx.h" #include TCHAR cRecs[200],cSends[100]; //接收字符串发送字符串 char j=0,*cCom; //接收用统计数据大小变量端口选择 BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog); HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand); HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose); } return FALSE; } /*系统初始化函数*/ BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) { HWND hwndCombo1=GetDlgItem(hwnd,IDC_COMBO1); ComboBox_InsertString(hwndCombo1,-1,TEXT("COM1")); ComboBox_InsertString(hwndCombo1,-1,TEXT("COM2")); 以下是在vc++6.0下运行的结果,我列举了输入345,进制分别为2,8,16的得出的结果,下面的不止只有这三个,输入任意进制的都可以 输入一个整数和进制数:345,2 转换成进制之后的数:101011001 Press any key to continue 输入一个整数和进制数:345,2 转换成进制之后的数:101011001 Press any key to continue 输入一个整数和进制数:345,16 转换成进制之后的数:159 Press any key to continue 程序如下: #include int Push(SeqStack *S,StackElementType x) { if(S->top==Stack_Size-1) return(FALSE); S->top++; S->elem[S->top]=x; return(TRUE); } int Pop(SeqStack *S,StackElementType *x) { if(S->top==-1) return(FALSE); else { *x=S->elem[S->top]; S->top--; return(TRUE); } 面就是用C语言编写控制串行口的程序 公司标准化编码 [QQX96QT-XQQB89Q8-NQQJ6Q8-MQM9N] 面就是用C语言编写控制串行口的程序。 #include" " #include" " #include" " #definePORT0 voidSendFile(char*fname);/*发送文件*/ voidSend(ints);/*发送一个字节*/ voidSendFileName(char*fname);/*发送文件名*/ voidReceiveFile();/*接收文件*/ voidGetFileName(char*f);/*接收文件名*/ voidInitPort(intport,unsignedcharpara);/*初始化端口*/ voidSendPort(intport,charc);/*端口发送*/ intReadPort(intport);/*读端口字节*/ intCheckState(intport);/*检查端口状态*/ intReceive(intport,int*G);/*接收一个字节*/ main(intargc,char*argv[]) { if(argc<2){ printf("PleaseinputR(receive)orS(sent)parametre:"); exit(1); } InitPort(PORT,231); if(*argv[1]==''''S'''') /*检查选择的有效性*/ SendFile(argv[2]); else?if(*argv[1]==''''R'''') ReceiveFile(); else{ printf("Error?inputagain."); exit(1); } } voidSendFile(char*fname) .数制转换。 编写程序,将十进制整数N转换为d进制数,其转换步骤是重复以下两步,直到N等于0。 X=N mod d (其中mod为求余运算) N=N div d (其中div为整除运算) 测试数据:以十进制到二进制转换为例 输出结果为:(789)10→(1100010101)2 注意:要求使用栈的基本运算(包括InitStack(S),Pop(S),Push(S),IsEmpty(S)。应引用栈的头文件实现)。 #include S->top--; return *b; } } int main(void) { SeqStactk S; int x,d,a,b; InitStack(&S); printf("栈%s\n",(IsEmpty(&S)==1?"空":"不空")); printf("输入十进制数x:"); scanf("%d",&x); printf("输入想求几进制d:"); scanf("%d",&d); while(x!=0) { a=x%d; Push(&S,&a); x=x/d; } printf("输出%d进制数:",d); while(Pop(&S,&b)!=-1) { printf("%d",b); } printf("\n"); return 0; } /*write*/ #include 摘要: 本文说明了异步串行通信(RS-232)的工作方式,探讨了查询和中断两种软件接口利弊,并给出两种方式的C语言源程序的I/O通道之一,以最简单方式组成的串行双工线路只需两条信号线和一条公共地线,因此串行通信既有线路简单的优点同时也有它的缺点,即通信速率无法同并行通信相比,实际上EIA RS-232C在标准条件下的最大通信速率仅为20Kb/S。 尽管如此,大多数外设都提供了串行口接口,尤其在工业现场 RS-232C的应用更为常见。IBM PC及兼容机系列都有RS-232的适配器,操作系统也提供了编程接口,系统接口分为DOS功能调用和BIOS 功能调用两种:DOS INT 21H的03h和04h号功能调用为异步串行通信的接收和发送功能;而BIOS INT 14H有4组功能调用为串行通信服务,但DOS和BIOS功能调用都需握手信号,需数根信号线连接或彼此间互相短接,最为不便的是两者均为查询方式,不提供中断功能,难以实现高效率的通信程序,为此本文采用直接访问串行口硬件端口地址的方式,用C语言编写了串行通信查询和中断两种方式的接口程序。 1.串行口工作原理 微机串行通信采用EIA RS-232C标准,为单向不平衡传输方式,信号电平标准±12V,负逻辑,即逻辑1(MARKING)表示为信号电平-12V,逻辑0(SPACING)表示为信号电平12V,最大传送距离15米,最大传送速率19.6K波特,其传送序列如图1,平时线路保持为1,传送数据开始时,先送起始位(0),然后传8(或7,6,5)个数据位(0,1), 接着可传1位奇偶校验位,最后为1~2个停止位(1),由此可见,传送一个ASCII字符(7位),加上同步信号最少需9位数据位。 @@T8S12300.GIF;图1@@ 串行通信的工作相当复杂,一般采用专用芯片来协调处理串行数据的发送接收,称为通用异步发送/接收器(UART),以节省CPU的时间,提高程序运行效率,IBM PC系列采用8250 UART来处理串行通信。在BIOS数据区中的头8个字节为4个UART的端口首地址,但DOS 只支持2个串行口:COM1(基地址0040:0000H)和COM2(基地址0040:0002H)。8250 UART共有10个可编程的单字节寄存器,占用7个端口地址,复用地址通过读/写操作和线路控制寄存器的第7位来区分。这10个寄存器的具体功能如下: COM1(COM2) 寄存器 端口地址功能DLAB状态 3F8H(2F8H) 发送寄存器(写) 0 3F8H(2F8H) 接收寄存器(读) 0 3F8H(2F8H) 波特率因子低字节1 3F9H(2F9H) 波特率因子高字节1 3F9H(2F9H) 中断允许寄存器0 3FAH(2FAH) 中断标志寄存器 3FBH(2FBH) 线路控制寄存器 3FCH(2FCH) MODEM控制寄存器 3FDH(2FDH) 线路状态寄存器 模拟串口的C语言源程序代码 本程序是模拟串口硬件机制写的,使用时可设一定时中断,时间间隔为 1/4 波特率,每中断一次调用一次接收函数,每中断4 次调用一次发送函数,不 过.对单片机来说时钟并须要快.要知道9600 的波特率的每个BIT 的时间间隔是 104us.而单片机中断一次压栈出栈一次的时间是20us 左右(标准的51 核12M 晶体)这样处理时间就要考虑清楚了.呵呵.以下程序是放在定时器中断程序函数内 的 //接收部分sbit JieShou_D= ;//定义接收端口uint8 DingShiJiShu,JieShou_h;//定时计数,接收缓冲器uint16 JieShou_T;//接收临时寄存器bit KaiShi,JieShou_b;// 开始接收标准,接收完成标志 void JieShou(void) //接收函数,每4 次调用接收一位{ if((KaiShi==0) (JieShou_D==0)) //串行开始位到来{ DingShiJiShu=0; //开始定时计数KaiShi=1; JieShou_T=0xffff; //接收临时寄存器置全1 } else if((KaiShi==1) (DingShiJiShu==1)) //第2 次调用,串行数据采样时间到来{ JieShou_T = 1; if(JieShou_D) JieShou_T |=0x8000; } else if(JieShou_T 0x807f ==0x803f) //接收完成JieShou_T=1xxx_xxxx_x011_1111 { KaiShi=0; DingShiJiShu=0; JieShou_h = JieShou_T 7; //右移7 位得到串行数据JieShou_b=1; } if(KaiShi) { DingShiJiShu++; //只在开始接收时定时计数+1 DingShiJiShu =0x03; //每4 次调用接收一位} } //发送部分sbit FaSong_D= ;//定义发送端口uint16 FaSong_h; //发送缓冲区bit FaSong_b; //发送完成标志 void KaiShiFaSong(uint8 fs) //设置发送数据,开始发送{ FaSong_h = fs; FaSong_h = 1; FaSong_h |= 0x0200; //FaSong_h=0000_001x_xxxx_xxx_0 我用的将16进制文本转换为ascii码的C语言代码。16进制文本复制到文件test.txt中,运行程序,将得到输入。 例: 运行:./CSTRING test.txt 其中,test.txt文件内容为: 30:31:32 则得到的"Cstring.txt"输入文件中 012 本程序能自动跳过0或多个分隔符(分隔符可以为任意的符号,如“:”,“%”或空格等,判断的函数实现见SkipDelimiter函数)。 如:输入文件内容为: 30 31 32 或 303132 得到的都是 012 [cpp]view plain copy 1.#include 13. printf("one ucChar= 0x%x\n", (char)ucChar); 14.switch(ucChar) 15. { 16.case'0': 17. ucTmp = 0x00; 18.break; 19.case'1': 20. ucTmp = 0x01; 21.break; 22.case'2': 23. ucTmp = 0x02; 24.break; 25.case'3': 26. ucTmp = 0x03; 27.break; 28.case'4': 29. ucTmp = 0x04; 30.break; 31.case'5': 32. ucTmp = 0x05; 33.break; 34.case'6': 35. ucTmp = 0x06; 36.break; 37.case'7': 38. ucTmp = 0x07; 39.break; 40.case'8': 41. ucTmp = 0x08; 42.break; 43.case'9': 44. ucTmp = 0x09; 45.break; 46.case'a': 47.case'A': 48. ucTmp = 0x0a; 49.break; 50.case'b': 51.case'B': 52. ucTmp = 0x0b; 53.break; 54.case'c': 55.case'C': 56. ucTmp = 0x0c;c语言串口通信范例
十六进制数转换成十进制数C语言
进制转换C语言的实现
最新C任意进制转换程序
(C语言)10进制转换2,8,16进制
用C编写的RS232串口通信程序
用C语言编写串口程序
(c语言程序设计)10进制数转化为其它进制数
C语言串口通信助手代码
任意进制转换(数据结构c语言版)
面就是用C语言编写控制串行口的程序修订稿
c语言实现数制转换
串口通信linux c语言实现
C语言实现串口通信
模拟串口的C语言源程序代码
C进制文本转换为ascii码