⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timetest.c

📁 vxworks系统下读取系统时间的源代码,希望对大家有用,vxworks自带的时间是不准的.
💻 C
字号:
/* test.c */

#include<stdio.h>
#include<stdlib.h>
#include<syslib.h>
#include<time.h>
time_t biostime()
{
    struct tm mark;
    unsigned char cHour,cMin,cSec;
    unsigned char cDay,cMonth,cYear;
    sysOutByte(0x70,0x00);
    cSec=sysInByte(0x71);
    mark.tm_sec=(cSec&0x0F)+10*((cSec&0x0F0)>>4);
    sysOutByte(0x70,0x02);
    cMin=sysInByte(0x71);
    mark.tm_min=(cMin&0x0F)+10*((cMin&0x0F0)>>4);
    sysOutByte(0x70,0x04);
    cHour=sysInByte(0x71);
    mark.tm_hour=(cHour&0x0F)+10*((cHour&0x0F0)>>4);
    sysOutByte(0x70,0x07);
    cDay=sysInByte(0x71);
    mark.tm_mday=(cDay&0x0F)+10*((cDay&0x0F0)>>4);
    sysOutByte(0x70,0x08);
    cMonth=sysInByte(0x71);
    mark.tm_mon=(cMonth&0xF0)+10*((cMonth&0x0F0)>>4)-1;
    sysOutByte(0x70,0x09);
    cYear=sysInByte(0x71);
    mark.tm_year=100+(cYear&0xF0)+10*((cYear&0x0F)>>4);
    fprintf(stdout,"sec=%d\n",mark.tm_sec);
    fprintf(stdout,"min=%d\n",mark.tm_min);
    fprintf(stdout,"hour=%d\n",mark.tm_hour);
    fprintf(stdout,"day=%d\n",mark.tm_mday);
    fprintf(stdout,"mon=%d\n",mark.tm_mon);
    fprintf(stdout,"year=%d\n",mark.tm_year);
/* write */
    sysOutByte(0x70,0x00);
    sysOutByte(0x71,0x30);
    cSec=sysInByte(0x71);
    mark.tm_sec=(cSec&0x0F)+10*((cSec&0x0F0)>>4);
    sysOutByte(0x70,0x02);
    sysOutByte(0x71,0x30);
    cMin=sysInByte(0x71);
    mark.tm_min=(cMin&0x0F)+10*((cMin&0x0F0)>>4);
    sysOutByte(0x70,0x04);
    sysOutByte(0x71,0x30);
    cHour=sysInByte(0x71);
    mark.tm_hour=(cHour&0x0F)+10*((cHour&0x0F0)>>4);
    sysOutByte(0x70,0x07);
    sysOutByte(0x71,0x06);
    cDay=sysInByte(0x71);
    mark.tm_mday=(cDay&0x0F)+10*((cDay&0x0F0)>>4);
    sysOutByte(0x70,0x08);
    sysOutByte(0x71,0x06);
    cMonth=sysInByte(0x71);
    mark.tm_mon=(cMonth&0xF0)+10*((cMonth&0x0F0)>>4)-1;
    sysOutByte(0x70,0x09);
    sysOutByte(0x71,0x06);
    cYear=sysInByte(0x71);
    mark.tm_year=100+(cYear&0xF0)+10*((cYear&0x0F)>>4);
    fprintf(stdout,"sec=%d\n",mark.tm_sec);
    fprintf(stdout,"min=%d\n",mark.tm_min);
    fprintf(stdout,"hour=%d\n",mark.tm_hour);
    fprintf(stdout,"day=%d\n",mark.tm_mday);
    fprintf(stdout,"mon=%d\n",mark.tm_mon);
    fprintf(stdout,"year=%d\n",mark.tm_year);
    return mktime(&mark);
}
void inittime()
{
    int res;
    struct timespec ts;
    struct tm daytime;
    time_t systime;
    ts.tv_sec=biostime();
    ts.tv_nsec=0;
    res=clock_settime(CLOCK_REALTIME,&ts);
    systime=time(NULL);
    daytime=*localtime(&systime);
    fprintf(stdout,"The current time is %s\n",asctime(&daytime));
}
STATUS test(void)
{
    unsigned char sec;
    unsigned char i=0,j=0;
    sysOutByte(0x70,0x00);
    sec=sysInByte(0x71);
    i=(sec&0x0F)+10*((sec&0x0F0)>>4);
    fprintf(stdout,"i= %d \n",i);
    sysOutByte(0x70,0x00);
    sec=sysInByte(0x71);
    j=(sec&0x0F)+10*((sec&0x0F0)>>4);
    fprintf(stdout,"j= %d \n",j);
    fprintf(stdout,"j-i= %d \n",(j-i));
}

STATUS t(void)
{
    if (taskSpawn("t0", 100, 0, 10000,(FUNCPTR) test, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) == ERROR)
    {
        perror ("taskSpawn"); 
    }
    else
    {
        fprintf(stdout,"\nTaskSpawn tcpClient0 successful!\n");
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -