20155211第十六周课堂实践
要求
在作业本上完成附图作业,要认真看题目要求。
提交作业截图
提取/设置小时
#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;
}