1.键盘硬件连接。
看一看实验板上键盘的接法,如下图所示,可以看到,它与51键盘接法也没有什么区别。
以下程序功能是实现k1~k4分别被按下时,在数码管上分别显示1~4。
2.程序实现。
void main( void )
uchar temp,keyval = 0;
wdtctl = wdtpw + wdthold; /关闭看门狗。
boardconfig(0x88); 打开数码管,关闭流水灯和电平转换。
p1dir = bit7; /设置p1.0~p.3为输入状态,p.7为输出。
p1out = 0;
p3dir |=bit4; /设置p3.4为输出状态。
p3out |=bit4; /p3.4输出1
p4dir = 0xff;
p5dir = 0xff;
p4out = 0x3f;
p5out = 0xf7;
while(1)
p4out = scandata[keyval]; 用一位数码管显示。
看来,键盘处理程序与其他单片机键盘处理程序也没有什么区别。主要就是来看一看设置。
3.一些符号的函义。
查找这个符号,可以看到在中有这样的定义:
#define p1dir_ (0x0022) /port 1 direction */
defc( p1dir , p1dir_)
再查找数据手册:
这样,第1行就不难理解了。定义p1dir_这个符号是0x0022,即其p1的方向控制寄存器地址。
第2行如何理解呢?查网络,见到这样一段例子。
#define me1_ (0x0004)
defc( me1 , me1_)
me1关联端口0x0004
defc的c是字节的意思,也就是me1 就是地址0004处的一个字节。
按此推导,p1dir是地址0x0022处的一个字节。是否因为msp430是16位系统,因此所有地址都是16位的,而p1dir是一个字节,因此需要这样转换一下。
bit7的定义同样在头文件中:
#define bit7 (0x0080)
按注释p1dir=0x0080相当于p1.7作为输出,而p1.0~p1.
6均作为输入。也就是p1dir相应位是0时,引脚作为输入使用,而p1dir相应位是1时,引脚作为输出使用。从下图可以看出。
按上图所示,当p1dir某位是0时,门1和门2关闭,门3打开,即该引脚作为输入使用(看图中的红色框)。
当p1dir某位是1时,门1和门2打开,门3关闭,即该引脚作为输出使用。
p1out相关定义如下:
#define p1out_ (0x0021) /port 1 output */
defc( p1out , p1out_)
即p1out是输出寄存器。
4.修改程序,实现自己的功能。
下面让我们对程序略作修改,实现我们自己的功能。
按键k1~k4被定义为分别点亮r、g、b三个发光管,这三个发光管分别接在p2.0,p2.1和p2.2引脚上。
void main( void )
uchar temp,keyval = 0;
wdtctl = wdtpw + wdthold; /关闭看门狗。
boardconfig(0xf0); 关闭数码管和电平转换,打开流水灯
p1dir = bit7; /设置p1.0~p.3为输入状态,p.7为输出。
p1out = 0;
p2dir = 0xff; /设置p2口方向为输出。
p2out = 0xff;
while(1)
p2out=keyval;
程序实现:修改好**,编译链接开始**。全速运行,按下k1,红灯亮,按下k2绿灯亮,按下k3,蓝灯亮。按下k4,3个灯全灭。
林学概论经典学习笔记
良种 指遗传品质和播种品质均优良的林木种子。遗传品质包括速生性 丰产性 优质性 抗逆性。一般把种子结实多的年份称为种子年 大年或丰年 中等年份为平年 结实量小的年份为小年或者歉年。林木结实的丰年和歉年经常交替出现,这种现象称为林木结实的周期性。关于抑花激素和成花激素,种子年时,林木种子含有大量的抑花...
CSharp入门经典学习笔记
特点 不限操作系统,不限应用程序类型,不限访问语言 通用类型系统,common style system cst 包含 库 net公共语言运行库 common language runtime clr 负责管理用。net 库开发的所有应用程序的运行 编译过程 c microsoft中间语言 micr...
VC 入门经典学习笔记
vc 入门经典学习笔记。一函数。这里是源码 a.函数是具有用途的自包含的 块。函数名既是函数的标识,用来在程序中调用函数。如果函数名不在名称空间中定义,它就是全局的,否则就要用名称空间的名称来限定他。b.函数的主要优点之一是根据需要可以在程序的不同位置执行任意次。如果不能将 块封装到函数中,则程序将...