No.64911 作者:ZhouYongliang 邮件:my_zhouyongliang@sina.com ID:23812 登陆:57次 -- MSN:Yongliang_580@msn.com 文章数:8篇 最后登陆IP:124.200.241.26 最后登陆:2011/8/21 7:11:59 注册:2004/7/24 12:00:28 财富:235 发帖时间:2011/6/29 9:40:55 发贴者IP:124.200.53.104 标题:ZhouYongliang:Windows CE5 的单片机采样程序[原创] 摘要:No.64911Windows CE5 的单片机采样程序[原创] 发到 Windows CE5 适用于 C8051F350 // 变量声明 unsigned char xdata Vx_Char[8]; // 取模数组 unsigned char code Show_Char[10] = {'0','1','2','3','4','5','6','7','8','9'}; unsigned long xdata X_Scale , Y_Scale , Z_Scale; unsigned char Chnnl; /*************************************************/ /******* 用于 ADC 转换的结构变量 *****************/ /*************************************************/ typedef union LONGDATA { unsigned long result; unsigned char Byte[4]; } xdata LONGDATA; static LONGDATA rawvalue; /*************************************************/ /************ 发到 Windows CE5 的检测数据函数 ************* * 名称: * 说明: 单通道启动 * 功能: 检测数据读取 * 调用: X_Read();Y_Read();Z_Read(); * 输入: 无 * 返回值: (其它反回值) X_Scale , Y_Scale , Z_Scale ; ***********************************************/ void Superior_Data (void) { Variable_Char(X_Read()); UARTS_Char('$'); UARTS_Char('A'); UARTS_Char(Show_Char[Vx_Char[0]]); UARTS_Char(Show_Char[Vx_Char[1]]); UARTS_Char(Show_Char[Vx_Char[2]]); UARTS_Char(Show_Char[Vx_Char[3]]); UARTS_Char(Show_Char[Vx_Char[4]]); UARTS_Char(Show_Char[Vx_Char[5]]); UARTS_Char(Show_Char[Vx_Char[6]]); UARTS_Char(Show_Char[Vx_Char[7]]); UARTS_Char('\n'); UARTS_Char('\r'); Variable_Char(Y_Read()); UARTS_Char('$'); UARTS_Char('B'); UARTS_Char(Show_Char[Vx_Char[0]]); UARTS_Char(Show_Char[Vx_Char[1]]); UARTS_Char(Show_Char[Vx_Char[2]]); UARTS_Char(Show_Char[Vx_Char[3]]); UARTS_Char(Show_Char[Vx_Char[4]]); UARTS_Char(Show_Char[Vx_Char[5]]); UARTS_Char(Show_Char[Vx_Char[6]]); UARTS_Char(Show_Char[Vx_Char[7]]); UARTS_Char('\n'); UARTS_Char('\r'); Variable_Char(Z_Read()); UARTS_Char('$'); UARTS_Char('C'); UARTS_Char(Show_Char[Vx_Char[0]]); UARTS_Char(Show_Char[Vx_Char[1]]); UARTS_Char(Show_Char[Vx_Char[2]]); UARTS_Char(Show_Char[Vx_Char[3]]); UARTS_Char(Show_Char[Vx_Char[4]]); UARTS_Char(Show_Char[Vx_Char[5]]); UARTS_Char(Show_Char[Vx_Char[6]]); UARTS_Char(Show_Char[Vx_Char[7]]); UARTS_Char('\n'); UARTS_Char('\r'); } /************ 单通道启动检测函数 ************* * 名称: X_Read();Y_Read();Z_Read(); * 说明: 单通道启动 * 功能: 检测数据读取 * 调用: 中断 ADC0_ISR * 输入: 无 * 返回值: X_Scale , Y_Scale , Z_Scale ; ***********************************************/ /*********************X*************************/ long X_Read(void) // V { ADC0CN = 0x00; // 增益设置 == 1 ADC0MUX = 0x01; // 0x08; 电压通道差动配置 // Chnnl = 1; if (ADC0MD == 0x80){ADC0MD = 0x82;}; EIE1 = 0x08; // 开启 ADC_ISR while(AD0BUSY) PCA0CPH2 = 0x0E; // 喂狗 return(rawvalue.result); } /*********************Y*************************/ long Y_Read(void) // I { ADC0CN = 0x05; // 增益设置 == 32 ADC0MUX = 0x23; // 0x18; 电流通道差动配置 // Chnnl = 2; if (ADC0MD == 0x80){ADC0MD = 0x82;}; EIE1 = 0x08; // 开启 ADC_ISR while(AD0BUSY) PCA0CPH2 = 0x0E; // 喂狗 return(rawvalue.result); } /*********************Z*************************/ long Z_Read(void) // Power V { ADC0CN = 0x00; // 增益设置 == 1 ADC0MUX = 0x45; // 0x28; 本机电源检测通道差动配置 // Chnnl = 3; if (ADC0MD == 0x80){ADC0MD = 0x82;}; EIE1 = 0x08; // 开启 ADC_ISR while(AD0BUSY) PCA0CPH2 = 0x0E; // 喂狗 return(rawvalue.result); } /********************END************************/ /******************** ADC 通道切换函数 ****************** * 名称: Switch_Gate * 说明: 交叉数据采样 * 功能: 通道切换交叉启动 ADC * 调用: 无 * 输入: 无 * 返回值: X_Scale , Y_Scale , Z_Scale ; ************************* ......
>>返回讨论的主题
|