老师让我们做的,我也不知道错哪了?大虾们看看,,,XIEIXE

[复制链接]
 楼主| tingtang 发表于 2009-3-25 20:50 | 显示全部楼层 |阅读模式
MSP430&nbsp;X22X4学习板<br />4*4键盘在自己焊的两个七段数码管显示<br /><br /><br /><br />#include&nbsp;&ltmsp430x22x4.h&gt<br />int&nbsp;tmp;<br />typedef&nbsp;unsigned&nbsp;int&nbsp;uchar;<br />typedef&nbsp;unsigned&nbsp;int&nbsp;uint;<br />uchar&nbsp;cnt&nbsp;=&nbsp;0;&nbsp;//位码<br />uchar&nbsp;scandata[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x07,0x75,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};<br />/***********全局变量********************/<br />int&nbsp;key_pressed;&nbsp;//按键是否按下&nbsp;1--是,&nbsp;0--否<br />int&nbsp;key_val;&nbsp;//存放键值<br />int&nbsp;key_flag;&nbsp;//是否放开&nbsp;1--是,&nbsp;0--否<br />int&nbsp;tmp1;<br />int&nbsp;row;<br />int&nbsp;col;<br />int&nbsp;tmp1;<br />int&nbsp;tmp2;<br />//键盘逻辑键值与程序计算键值的映射<br />uchar&nbsp;key_map[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};<br />uchar&nbsp;Dispbuf[2];<br /><br />/****************<br />初始化键盘扫描的io端口<br />*********************/<br />void&nbsp;init_keypad(void)<br />{<br />P1DIR=0xf0;<br />P1OUT&nbsp;|=0xf0;<br />key_pressed&nbsp;=0;<br />key_flag=0;<br />key_val=0;<br />}<br /><br />void&nbsp;main(void)<br />{<br />WDTCTL=WDT_ADLY_1_9;//看门狗计时&nbsp;1、9毫秒中断<br />IE1&nbsp;|=WDTIE;<br />P4DIR=0xff;<br />P3DIR=0xff;<br />P4OUT=0x00;<br />P3OUT=0xff;<br /><br />_EINT();&nbsp;//全局中断<br />init_keypad();<br />while(1)<br />{<br /><br />P1OUT&nbsp;&=0x00;//设置p1out全为0,等待按键输入<br />tmp&nbsp;=&nbsp;P1IN;//获取p1in<br />if((key_pressed&nbsp;==0x00)&&((tmp&nbsp;&0x0f)&lt0x0f))//如有键按下<br />{<br />key_pressed&nbsp;=&nbsp;1;//如有键按下,设置key_press标志为一<br />{<br />uint&nbsp;tmp;<br />for(tmp&nbsp;=&nbsp;12000;tmp&gt0;tmp--);<br />}<br /><br /><br />tmp1=0x80;<br />for(row&nbsp;=0;row&lt4;row++)&nbsp;//行扫描<br />{<br />P1OUT=0xf0;&nbsp;//p1.4--1.7全输1<br />P1OUT&nbsp;-=&nbsp;tmp1;&nbsp;//p1.4--1.7输出四位有一个为0<br />tmp1&gt&gt=1;<br />if((P1IN&nbsp;&&nbsp;0x0F)&lt0x0f)&nbsp;//是否p1in的p1.0--p1.3有一个0<br /><br />{<br />tmp2&nbsp;=&nbsp;0x01;&nbsp;//tmp2检测哪一位为0<br />for(col&nbsp;=&nbsp;0;col&nbsp;&lt&nbsp;4;col++)&nbsp;//列检测<br />{<br />if((P1IN&nbsp;&&nbsp;tmp2)==0x00)//是否是该列&nbsp;为0是<br />{<br />key_val&nbsp;=&nbsp;key_map[row*4&nbsp;+&nbsp;col];//获取键值<br />return;&nbsp;//&nbsp;退出循环<br />}<br />tmp2&nbsp;&lt&lt=1;&nbsp;//tmp2右移一位<br /><br />}<br />}<br />}<br />//check_key();//调用它,获取键值<br />}<br />else&nbsp;if&nbsp;((key_pressed&nbsp;==&nbsp;1)&&((tmp&nbsp;&0x0f)==0x0f))//按键已放<br />{<br />key_pressed&nbsp;=&nbsp;0;//清除key_press标示<br />key_flag&nbsp;=&nbsp;1;&nbsp;//设置key_flag标志<br />}<br />else<br />{<br />_NOP();<br />}<br /><br />if&nbsp;(key_flag==1)<br />{<br />key_flag=0;<br />Dispbuf[0]=key_val&nbsp;/10;<br />Dispbuf[1]=key_val&nbsp;%10;<br />}<br />}<br />}<br /><br />#pragma&nbsp;vector=WDT_VECTOR<br />__interrupt&nbsp;void&nbsp;watchdog_timer(void)<br />{<br />P3OUT=0xff;<br />P4OUT=scandata[Dispbuf][cnt]];//段选<br />P3OUT&nbsp;&=~(1&lt&lt(cnt));//位选<br />cnt++;&nbsp;//位计数变量在0&nbsp;1间循环<br />if&nbsp;(cnt==2)&nbsp;cnt=0;<br />}<br /><br />谢谢了&nbsp;<br />
iC921 发表于 2009-3-25 22:21 | 显示全部楼层

还没人来解?

  
yudongx 发表于 2009-3-26 22:52 | 显示全部楼层

我编译的时候一直出错,正在改错呢

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

147

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部