完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include "includes.h" #include "sys.h" #include "USART.h" #define KeyPort P1IN //矩阵键盘端口 #define LED P4OUT //LED端口 uchar key; //用于暂存键值 uchar KeyNum; void usart(); void sent_byte(unsigned char data); extern void receive_byte(unsigned chardata2); void Portinit() { P4SEL=0X00; P4DIR=0XFF; P4OUT=0XFF; P1SEL=0X00; P1DIR=0XF0; } uchar KeyScan(void) { //uchar KeyNum; P1OUT=0X0F; if((KeyPort&0X0F)!=0X0F) { DelayMs(10); if((KeyPort&0X0F)!=0X0F) { P1OUT=0XE0; //判断哪列被拉低 if((KeyPort&0X0F)==0X0E) //判断哪行被拉低 KeyNum= 0; if((KeyPort&0X0F)==0X0d) KeyNum= 1; if((KeyPort&0X0F)==0X0b) KeyNum= 2; if((KeyPort&0X0F)==0X07) KeyNum= 3; P1OUT=0XD0; if((KeyPort&0X0F)==0X0E) KeyNum= 4; if((KeyPort&0X0F)==0X0d) KeyNum= 5; if((KeyPort&0X0F)==0X0b) KeyNum= 6; if((KeyPort&0X0F)==0X07) KeyNum= 7; P1OUT=0XB0; if((KeyPort&0X0F)==0X0E) KeyNum= 8; if((KeyPort&0X0F)==0X0d) KeyNum= 9; if((KeyPort&0X0F)==0X0b) KeyNum= 10; if((KeyPort&0X0F)==0X07) KeyNum= 11; P1OUT=0X70; if((KeyPort&0X0F)==0X0E) KeyNum= 12; if((KeyPort&0X0F)==0X0d) KeyNum= 13; if((KeyPort&0X0F)==0X0b) KeyNum= 14; if((KeyPort&0X0F)==0X07) KeyNum= 15; } else { KeyNum=0xFF; } } return KeyNum; } void main() { key=0; uchar flag=0; ClockInit(); WDTInit(); PortInit(); _EINT(); while(1) { key=KeyScan(); if(key!=0xFF) { LED=(0xF0|~key); if(flag==1) { sent_byte(KeyNum); flag=0; } } } } |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
3020个成员聚集在这个小组
加入小组2901 浏览 1 评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3419 浏览 2 评论
请问怎么把下面51单片机的代码改成msp430 g2 pocket的代码,还有改下时间变成30秒
2329 浏览 1 评论
4787 浏览 1 评论
2560 浏览 1 评论
1299浏览 3评论
MSP430FR5994 使用库函数 定时器触发AD问题请教
3420浏览 2评论
2902浏览 1评论
1466浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-15 16:25 , Processed in 1.170920 second(s), Total 48, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号