20155211第十六周课堂实践

20155211第十六周课堂实践

要求

在作业本上完成附图作业,要认真看题目要求。
提交作业截图
image

提取/设置小时

#define TIME_Addr 0xFFFFC000
#define TIME *(volatile int *)(DATA_Addr+2)

void SetHours(int hours)
{
    int time;
    time=TIME;
    time=time&0x07FF;
    time=time|(hours<<11);
    TIME=time;
}

int getHours()
{
int time,hours;
time=TIME;
hours=(time>>11)&0x1F;
return hours;
}
  • 课上时未仔细审题,提取时间时移位写成了<<10,且没有定义I/O存放的基址和时间存放的基址寄存器的位置

提取秒

  • 如图中所示提取以及设置秒的时候应该注意到0-4bit存储的是实际的秒数除以2的结果
#define TIME_Addr 0xFFFFC000
#define TIME *(volatile int *)(DATA_Addr+2)

void SetSeconds(int seconds)
{
    int time;
    time=TIME;
    time=time&0x07FFF;
    time=time|(seconds/2);
    TIME=time;
}

int getSeconds()
{
int time,seconds;
time=TIME;
seconds=time&0x1F;
return seconds*2;
}

posted on 2018-01-06 23:30  20155211  阅读(89)  评论(0编辑  收藏  举报