完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
下面的函数是一个用按键来控制数码管显示,我通过P1的中断来实现不断地计数加一显示,最大的显示数字是999,但是现在我的程序老是不能得到我想要的结果,那位大神能够帮我解决这个问题。
#include typedef unsigned char uchar; typedef unsigned int uint; uchar Table[10]={0xc0,0Xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//所需的段的位码 #define wei_h P5OUT|= BIT5 #define wei_l P5OUT&= ~BIT5 #define duan_l P6OUT &= ~BIT6 #define duan_h P6OUT |= BIT6 uint x,y,z,v, date=0;//定义数据类型 void DelayMS(uint i) { uint j; for(;i!=0;i--) { for(j=200;j!=0;j--); } } void Pre_Display() { x=date/1000; //求千位 y=date%1000/100;//求百位 z=date%100/10; //求十位 v=date%10; //求个位 P4OUT=Table[z]; //显示千位 duan_h; duan_l; P4OUT = 0XEF; wei_h; wei_l; DelayMS(5); //延时 P4OUT=Table[x]; //显示百位 duan_h; duan_l; P4OUT = 0XDF; wei_h; wei_l; DelayMS(5); //延时 P4OUT=Table[z]; //显示十位 duan_h; duan_l; P4OUT = 0XBF; wei_h; wei_l; DelayMS(5); //延时 P4OUT=Table[v]; //显示个位 duan_h; duan_l; P4OUT = 0X7F; wei_h; wei_l; DelayMS(5); //延时 } void main(void)//主函数 { P2DIR = 0xFF; P2OUT = 0xFF; P4DIR = 0XFF; //设置P4口为输出 P5DIR = 0XFF; //设置P5口为输出 P6DIR = 0xFF; P1DIR = 0x00; P1IE = 0xff; P1IES = 0xff; P1IFG=0; WDTCTL=WDTPW+WDTHOLD;//关闭看门狗 _BIS_SR(LPM3_bits + GIE); //CPU进入LPM3低功耗模式,同时打开全局中断 } #pragma vector=PORT1_VECTOR __interrupt void P1VECTOR(void) { if(P1IFG&0x08!=0) { Pre_Display(); date++; if(date>=999) date=0; } } |
|
相关推荐
5个回答
|
|
你的程序是使用动态扫描,可是你的扫描只是放在了中断里面,只有在中断的时候才会进行扫描,那样是看不的
你应该将那个扫描的程序放在主函数里面并且加上 WHILE(1),然后那个低功耗模式也是没有必要的,可以去掉,或者你可以将你的扫描程序放在定时器中断里面,这样就能够进入低功耗模式,而且数码管又能进行扫描了 |
|
|
|
楼上说得对,顶一下
|
|
|
|
powersource 发表于 2016-4-9 21:07 可是我该过程序后任然是把扫描放到中断里面能够看到现象,就是每按一次键会出现闪的一下,之后就只有个位辉=会显示出数字而十位百位千位不会显示。我调整扫描时间还是不行,会不会因为中断只进入一次,过去以后就会消失,请大神指教。 |
|
|
|
如果你是每按下一次按键,进入一次中断的话,作为动态扫描,Pre_Display();只在放在中断里面,是有问题的。
|
|
|
|
是有点问题,但是还不知道怎么解决,谢谢你的解答。 |
|
|
|
只有小组成员才能发言,加入小组>>
2945个成员聚集在这个小组
加入小组2703 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3032 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2278 浏览 1 评论
4706 浏览 1 评论
2491 浏览 1 评论
965浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3032浏览 2评论
2703浏览 1评论
1093浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-10 06:16 , Processed in 1.286613 second(s), Total 89, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号