您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

利用MC68HC908开发Pocket PC掌上电脑外设

时间:2007-1-20栏目:电子通信论文

按键的输入,可以使用普通的按键开关,也可以使用阵列的小键盘。按键输入产生的信号,送往GP32的通用I/O口PortA和PortB,其中PortA是键盘模块的接口,可产生键盘中断。

单片机的串口通信,由其SCI异步串行模块外接MAX232实现。

2.2 单片机的固件开发

单片机的固件程序用汇编语言编写,使用P&EWIN-IDE编译器进行编译。程序的流程如图3所示。

单片机的初始化,包括对基本配置、SCI串口和时钟TIM1等部分的初始化,如表1所列。

表1 固件程序的初始化

地  址 寄存器 值 描    述 $001E CONFIG1 01 属性设置 $001F CONFIG2 3D $0036 PCTL 71 锁相环(产生2.4576MHz内部总线时钟) $0037 PBWC E0 $0038 PMSH 01 $0039 PMSL 2C $003A PMRS 80 $0013 SCCR1 40 SCI(9600bps双向传输速率) $0014 SCCR2 0C $0019 BAUD 02 $0023 T1MODH 1E TIM1时钟(溢出中断10次/s) $0024 T1MODL 00 $0020 T1SC 55

如流程图所示,固件程序在完成初始化后,就会尝试与Pocket PC建立连接。

在向Pocket PC发送设备标识字节,并且反馈回正确的驱动字节后,认为成功建立了连接。之后,程序置位中断允许位,开始进入空循环方式等待时钟中断。

每次时钟中断发生后,将读取端口状态,然后进行判别、编码和送。输入的按键消息编码后用两个字节发送、并且附加上发送次序标识。

串口通信使用查询方式,通过反复查询SCI发送和接收器的状态,直到可以发送/接收数据为止。

*发送子程序

SENDATA:BRCLR7,SCS1,SENDATA

STA SCDR

RTS

*接收子程序

GETDATA:BRCLR 5,SCS1,GETDATA

LDA SCDR

RTS

此外,Pocket PC的外设开发应该做便携、低功耗等方面的考虑。例如,在固件程序等待中断的空循环体,加入一句WAIT指令,即在每次中断调用返回后等待下次中断期间,系统进入WAIT低功耗方式。因为每两次中断的间隔为100ms,而每次调用的中断子程不超过几十条指令,系统绝大部分的时间是等待;所以,这样能够比较明显地降低功耗。

2.3 软件的开发

Pocket PC上的接口驱动软件的开发,包括完成从串口获取数据、解码、向操作系统插入虚拟按键消息以及对于虚拟按键消息的设定等功能。接口驱动程序流程如图4所示。

Windows CE操作系统在编程接口(API)上,保持了与Win32体系的高度兼容。同时,使用Embedded Visual Tools中的C++开发环境与使用VC++6.0具有很大的相似性。

    在软件的开发中,使用到的技术主要有串口通信、多线程、发送虚拟按键消息、读写注册表等等。

这些功能都可以通过调用相应的API函数实现,如表2所列。Windows CE是一个全新架构的纯32位系统,它针对有限资源、高稳定度、模块化的需求,对于Win32 API函数作了大量的修改和简化。16位版本的API函数被舍弃,一些API函数对于Windows CE平台无意义的参数被定义为忽略,而且绝大部分API函数的内部实现已经不同于Win32平台了。但是,Windows CE版本的API函数在编程接口上与Win32平台还是保持了基于一致(见表2),因而,有VC++开发经验的人,能够比较快地转向Windows CE的程序设计。

表1 程序使用的API函数

API函数

功   能   注   释

CreateFil() 以文件名为“COM1:”打开串口,返回个文件句柄 ReadFile() 根据文件句柄,从串口读取字节 WriteFile() 根据文件句柄,向串口发送字节 PurgeComm() 清除串口之前的任务和数据

上一页  [1] [2] [3] 下一页

下页更精彩:1 2 3 4 下一页