R7F0C809芯片售后还可以,共有7个例子,而且每个例程里还提供文档,供开发者学习,还是很不错的。
本帖选取了第五个例程进行分析,主要是因为该例程和我们套件正好相对应,可以直接观察效果。 第五个例程为按键扫描配合 4 位 8 段数码管显示,其电路连接图如下,4位8段数码管采用共阳极接法,COM口和键盘扫描的输出口共用。 程序的关键是如何在进行键盘扫描时,同时进行数码管显示。 该例程为了解决这个问题,利用数码管显示时需要向COM发送高电平的同时,检测扫描输入即P00、P16引脚,当有按键按下时,相应的扫描输入将检测到高电平,从而兼顾了键盘扫描和数码显示的两个功能。 主函数的代码如下: - void main(void)
- {
- System_Init(); /* Initializes some function moudle */
- TS0 |= 0x01; /* Start TAU00 timer */
- while(1)
- {
- while(TMIF00 != 1); /* Wait the TAU00 interrupt flag set to 1*/
- TMIF00 = 0; /* TAU00 interrupt flag clear*/
-
- LED_Display(); /* Executive the LED_Display function*/
- TS0 |= 0x02; /* TAU01 start*/
- while(TMIF01 != 1); /* Wait the TAU01 interrupt flag set to 1*/
- TT0 |= 0x02; /* TAU01 stop*/
- TMIF01 = 0; /* TAU01 interrupt flag clear*/
- Key_Scan(); /* Executive the Key_Scan function*/
- LED_Mode(); /* Executive the Led_Mode function*/
- }
- }
复制代码由主函数可知,程序使用两个定时器TAU00、TAU01,主循环周期由TAU00控制周期为4.17ms,每个周期开始时先进行数码管的显示LED_Display(),然后延时2ms后(TS0 |= 0x02;while(TMIF01 != 1);TT0 |= 0x02;TMIF01 = 0; ),进行键盘扫描和显示模式切换。暂时分析到这了,具体功能可以见附件中例程。
|