下面的表白的脑筋急转弯问题急

求大神解决一下这个程序的问题!!急,在线等!_msp430吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:4,495贴子:
求大神解决一下这个程序的问题!!急,在线等!收藏
目的是要实现自动电压表量程转换,原理图链接:其实就是想写出这个方案的程序。。#include
&msp430.h&#include
"Cry1602.h"#include
"Cry1602.c"#define
Num_of_Results
32uchar shuzi[] = {"."};uchar tishi[] = {"The volt is:"};static uint results[Num_of_Results];
//保存ADC转换结果的数组
// is not used for anything.void Trans_val(uint Hex_Val);
uchar *s1 = "outrange!";//MCU的片内ADC对P6.0端口的电压进行转换,将模拟电压值显示在1602液晶上。/************************主函数****************************/void main(void){
WDTCTL = WDTPW+WDTHOLD;
//关闭看门狗
/*下面六行程序关闭所有的IO口*/
P1DIR = 0XFF;P1OUT = 0XFF;
P2DIR = 0XFF;P2OUT = 0XFF;
P3DIR = 0XFF;P3OUT = 0XFF;
P4DIR = 0XFF;P4OUT = 0XFF;
P5DIR = 0XFF;P5OUT = 0XFF;
P6DIR = 0XFF;P6OUT = 0XFF;
//P1.0控制CD4051通道开关,P1.1作为C输入,P1.2作为B输入,P1.3作为A输入P1DIR = BIT0;P1DIR = BIT1;P1DIR = BIT2;P1DIR = BIT3;//初始时,开关打到500V档,2通道导通P1OUT &=~ BIT0;P1OUT &=~ BIT1;P1OUT |= BIT2;P1OUT &=~ BIT3;
P6DIR |= BIT2;P6OUT |= BIT2;
//关闭电平转换
P5DIR|=BIT5;P5OUT&=~BIT5;
//关闭数码管显示
P6DIR|=BIT6;P6OUT&=~BIT6;
//半闭数码管显示
P6DIR|=BIT5;P6OUT&=~BIT5;
//半闭数码管显示
LcdReset();
//复位1602液晶
DispNChar(2,0,12,tishi);
//显示提示信息
Disp1Char(11,1,'V');
//显示电压单位
P6SEL |= 0x01;
// 使能ADC通道
ADC12CTL0 = ADC12ON+SHT0_8+MSC;
// 打开ADC,设置采样时间
ADC12CTL1 = SHP+CONSEQ_2;
// 使用采样定时器
ADC12IE = 0x01;
// 使能ADC中断
ADC12CTL0 |= ENC;
// 使能转换
ADC12CTL0 |= ADC12SC;
// 开始转换
}/*******************************************函数名称:ADC12ISR功
能:ADC中断服务函数,在这里用多次平均的
计算P6.0口的模拟电压数值参
:无********************************************/#pragma vector=ADC_VECTOR__interrupt void ADC12ISR (void){
static uint index = 0;
results[index++] = ADC12MEM0;
// Move results
if(index == Num_of_Results)
index = 0;
for(i = 0; i & Num_of_R i++)
sum += results[i];
sum = sum &&5; //除以32
Trans_val(sum);
void Trans_val(uint Hex_Val){
uint Curr_V
uchar t1,i;
uchar ptr[4];
caltmp = Hex_V
caltmp = (caltmp && 5) + Hex_V
//caltmp = Hex_Val * 33
caltmp = (caltmp && 3) + (caltmp && 1);
//caltmp = caltmp * 10
Curr_Volt = caltmp && 12;
//Curr_Volt = caltmp / 2^n
ptr[0] = Curr_Volt / 100;
//Hex-&Dec变换
t1 = Curr_Volt - (ptr[0] * 100);
ptr[2] = t1 / 10;
ptr[3] = t1 - (ptr[2] * 10);
ptr[1] = 10;
//shuzi表中第10位对应符号"."
void a(unit h) {
while(h) {
if (h& 0x1f4)
//如果模拟电压值大于500V
DispStr(4,0,s1);
else if(hl&=0x32&&h&=0x1f4)
//如果电压值在50V-500V
Trans_val(h);
else if(h&=0x05&&h&=0x32)
//如果电压值在5V-50V
{ P1OUT |= BIT1;
P1OUT &=~ BIT2;
P1OUT |= BIT3;
Trans_val(h);
else if((ptr[0]&0&&ptr[0]&=5)||(ptr[0]==0&&ptr[2]&=5))
//如果电压值在0.5V-5V
{ P1OUT &=~ BIT1;
P1OUT &=~ BIT2;
P1OUT |= BIT3;
Trans_val(h);
else if(h&0.05)
//如果电压值在小于0.05V
P1OUT |= BIT0;
P1OUT |= BIT1;
P1OUT |= BIT2;
Trans_val(h);
//如果电压值在0.05V-0.5V
P1OUT |= BIT0;
P1OUT |= BIT2;
P1OUT &=~ BIT3;
Trans_val(h);
/*******************************************函数名称:Trans_val功
能:将16进制ADC转换数据变换成三位10进制
真实的模拟电压数据,并在液晶上显示参
数:Hex_Val--16进制数据
n--变换时的分母等于2的n次方
:无********************************************///在液晶上显示变换后的结果
for(i = 0;i & 4;i++)
Disp1Char((6 + i),1,shuzi[ptr[i]]);问题如下
报考一级消防师要求,学尔森13年考培经验为您解答,更有百度信贷分期付学费.
图太小了,要么文字打出来,要么贴大图,,,,
Error[Pe065]: expected a ";" C:\Users\Administrator\Desktop\ele\main.c 97 Warning[Pe012]: parsing restarts here after previous syntax error C:\Users\Administrator\Desktop\ele\main.c 139 Error[Pe169]: expected a declaration C:\Users\Administrator\Desktop\ele\main.c 163 Warning[Pe012]: parsing restarts here after previous syntax error C:\Users\Administrator\Desktop\ele\main.c 177 Error while running C/C++ compiler Done. 2 error(s), 2 warning(s)
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或请回答一下下面的问题,很急!补充成语:含(
)写近义词:流浪(
)判断下面的句子是不是比喻句,是的请写出把什么比作什么.(1)自在飞花轻似梦,无边丝雨细如愁.______________________________________
黎约绛血Lr
含辛茹苦漂泊是比喻句,把飞花比作梦,把丝雨比作愁
为您推荐:
其他类似问题
扫描下载二维码百度拇指医生
&&&普通咨询
您的网络环境存在异常,
请输入验证码
验证码输入错误,请重新输入

我要回帖

更多关于 最污的问题脑筋急转弯 的文章

 

随机推荐