那么,一秒就要加1,怎么实现?
明显就是要计时啦
/*往下是任务三的代码
void TIMECOUNT_Task(void)
{
miao ++;
if( miao>59 )
{
miao = 0;
fen++;
if( fen>59 )
{
fen = 0;
shi ++;
if( shi>23 )
shi = 0;
}
}
}
记得去周期性调度函数,增加个新任务:
static TASK_COMPONENTS Task_Comps[]=
{
//状态计数周期函数
{0, 1 ,1 , Seg_Task}, /* task 1 Period: 1ms */
{0,1000,1000, TIMECOUNT_Task},/* task 1 Period: 1000ms */
// {0,1000,1000, PLED_40}, /* task 1 Period: 1000ms */
// {0,1000,1000, SEG_PC}, /* task 1 Period: 1000ms */
};
记得1s=1000ms
数码管是到处都用的,很稳定,价格低:
一点要学会才行的
接下来开启PC机屏幕“虚拟显示”:
看示例2, 9本身是1001
就是P0口和P4口有效
且P0是55---0101 0101 P4是AA-----10101010
上面的示例3有错
原来是
示例3:发送4CH 45H 44H 28H 05H OFH 11H 22H 33H 44H修改PO口的状态为11H,P1口为22H,P2口为33H,P3为44H,P4□为55H,P50为66H
正确的是:
示例3:发送4CH 45H 44H 28H 05H OFH 11H 22H 33H 44H修改PO口的状态为11H,P1口为22H,P2口为33H,P3口为44H,P4口为55H
我们来具体使用一下虚拟数码管:
void PLED_40(void)
{
u8 cod;
cod = 0x0f; //表示开启P0-P3
cod = 0X01; //P0端口
cod = 0X01; //P1端口
cod = T_NUM; //P2端口
//cod = ~T_NUM; //P2端口
cod = 0X01; //P3端口
LED40_SendData( cod,5 ); //这个函数在USB库里
//说明在STC32_STC8_USB.H里,详见:
//void LED40_SendData(BYTE *dat, BYTE size):
//2个参数,第一个是数组名字,第二个是成员数量
P2 = T_NUM;
//P2 = ~T_NUM;
state_now++;
if( state_now>7 )
state_now = 0;
上面是试验箱的流水灯+USD-CDC调试接口虚拟显示
}
打开我们的调试仿真接口:
先要设置:
把调试接口绑定到CDC的COM8口