完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include
#include "BoardConfig.h" #define keyin (P1IN & 0x0f) //数码管7位段码:0--f uchar scandata[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //记录显示位数的全局变量 uchar cnt = 0,TEMO=0Xff,keyval=0; void delay(void); /********************主函数********************/ void main(void) { uchar temp; WDTCTL = WDT_ADLY_1_9; // 设置内部看门狗工作在定时器模式,1.9ms中断一次 IE1 |= WDtiE; // 使能看门狗中断 BoardConfig(0x88); P1DIR = BIT7; //设置P1.0~P.3为输入状态,P.7为输出 P1OUT = 0; P4DIR = 0xff; //设置P4,P5的IO方向为输出 P5DIR = 0xff; P4OUT = 0x00; //设置P4,P5的输出初值 P5OUT = 0xff; while(1) { if(keyin != 0x0f) //如果有键被按下 { delay(); //延时消抖 if(keyin != 0x0f) //再次检测按键状态 temp=keyin; while(keyin != 0x0f); //等待按键被放开 switch(temp) //转换键值 { case 0x0e: keyval = 1;break; case 0x0d: keyval = 2;break; case 0x0b: keyval = 3;break; default: keyval = 0;break; } _BIS_SR(LPM3_bits + GIE); //CPU进入LPM3低功耗模式,同时打开全局中断 } } } /******************************************* 函数名称:delay 功 能:用于延时 参 数:无 返回值 :无 ********************************************/ void delay(void) { uint tmp; for(tmp = 12000;tmp > 0;tmp--); } /******************************************* 函数名称:watchdog_timer 功 能:看门狗中断服务函数,在这里输出数码管的 段选和位选信号 参 数:无 返回值 :无 ********************************************/ #pragma vector=WDT_VECTOR __interrupt void watchdog_timer(void) { uchar temq; if(keyval==1) { P5OUT = 0X00; delay(); delay(); delay(); delay(); P4OUT = scandata [0]; //输出段选信号 P5OUT = 0XFF; delay(); delay(); delay(); delay(); } if(keyval==2) { P5OUT = TEMO; switch(cnt) { case 0 : temq = 4;break; case 1 : temq = 7;break; case 2 : temq = 4;break; case 3 : temq = 4;break; case 4 : temq = 3;break; default: temq = 2;break; } P4OUT = scandata[temq]; //输出段选信号 P5OUT &= ~(1 << cnt); //输出位选信号 cnt++; //位计数变量在0~5之间循环 if(cnt == 6) cnt = 0; } if(keyval==3) { P5OUT = TEMO; P4OUT = scandata [0]; //输出段选信号 P5OUT &= ~(1 << cnt); //输出位选信号 cnt++; //位计数变量在0~5之间循环 if(cnt == 6) cnt = 0; delay(); P5OUT = ~TEMO; } LPM3_EXIT; } |
|
相关推荐
3 个讨论
|
|
只有小组成员才能发言,加入小组>>
3012个成员聚集在这个小组
加入小组2892 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3407 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2322 浏览 1 评论
4781 浏览 1 评论
2556 浏览 1 评论
1294浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3407浏览 2评论
2892浏览 1评论
1450浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-10 06:13 , Processed in 1.177592 second(s), Total 50, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号