完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
其中,按键按一次数码管变化一次
#include "msp430g2553.h" #define uint unsigned int #define uchar unsigned char void delay(uint z); int num,wei; unsigned long i; uchar table[11]={ 0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f, 0x00 }; uchar table1[8]={ 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; void keyscan(); void main() { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD; //主系统时钟切换为外部高速晶振 if (CALBC1_8MHZ == 0xFF || CALDCO_8MHZ == 0xFF) { while(1); // If calibration constants erased, trap CPU!! } // Configure Basic Clock BCSCTL1 = CALBC1_8MHZ; // Set range DCOCTL = CALDCO_8MHZ; // Set DCO step + modulation BCSCTL3 |= LFXT1S_2; // Set LFXT1 P1DIR=0XFF;//p4作为输出 P1DIR&=~BIT3;//P1.3按键输入 P2DIR=0XFF;//数码管段输出 P1IE |=BIT3; //使能按键P1.3引脚中断 P1IES&=~BIT3; //中断触发方式为上升降沿 P1IFG= 0x00; //清除中断标志位 _EINT();//开总中断 while(1) { P2OUT=table[10]; P1OUT|=BIT5;//设置p5.5为高电平 P2OUT=table1[wei]; P1OUT^=BIT5;//设置p5.5为低电平 P1OUT|=BIT6; P2OUT=table[num]; P1OUT^=BIT6; for(i=0;i<100000;i++); P2OUT=table[10]; } } #pragma vector=PORT1_VECTOR __interrupt void PORT1_ISR(void) { for(i=0;i<1000;i++);//消抖 if(P1IFG&BIT3) { num++; wei++; if(num==10) num=0; if(wei==8) wei=0; } P1IFG=0; //清除中断标志位 } |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
2937个成员聚集在这个小组
加入小组2680 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3003 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2273 浏览 1 评论
4703 浏览 1 评论
2484 浏览 1 评论
952浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3005浏览 2评论
2681浏览 1评论
1082浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-2 08:23 , Processed in 0.926009 second(s), Total 38, Slave 32 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191