zoukankan      html  css  js  c++  java
  • 【课堂实践】嵌入式基础

    实验内容

    实验思路

    1. 用uint16_t型(16位)指针time指向该16位寄存器,作为读取和修改寄存器值的通道;
    2. 定义一个名为timeOp的位域,结构如下,存储从寄存器中读取的值,修改操作在该位域上进行,修改后的值返回至寄存器中。

    实验代码

    typedef uint16_t u16;  //16位
    
    u16 *time;      
    time = OXFFFFC0000 + 2;   //time指针指向该寄存器
    
    struct{                  //定义一个timeOp位域
        unsigned seconds:5,  
        minutes: 6,
        hours: 5;
    }timeOp;
    
    timeOp.hours = *time>>11;            //利用time指针将寄存器中的值放至timeOp中
    timeOp.minutes = (*time & 0X07E0)>>5;
    timeOp.seconds = *time & 0X001F;
    
    /*
     * 函数功能:修改寄存器中的Hours部分的值
     * 实现方法:修改timeOp位域中hours的值,将位域的值利用time指针,传至寄存器中
     */
    void SetHours(int hours)
    {
        timeOp.hours = hours;
        *time = (u16)timeOp;  //通过强制转换的方式将值传给time指针,指针将值给寄存器
    }
    
    /*
     * 函数功能:返回寄存器中hours部分的值
     * 实现方法:将timeOp位域中hours的值直接返回即可
     */
    int getHours()
    {
        return timeOp.hours;
    }
    

    附加

    同理,对于寄存器中minutes、seconds的修改和读取,也可用同样的方法进行操作,函数如下:

    minutes
    /*
     * 函数功能:修改寄存器中的Minutes部分的值
     * 实现方法:修改timeOp位域中Minutes的值,将位域的值利用time指针,传至寄存器中
     */
    void SetMinutes(int minutes)
    {
        timeOp.mintutes = minutes;
        *time = (u16)timeOp;  //通过强制转换的方式将值传给time指针,指针将值给寄存器
    }
    
    /*
     * 函数功能:返回寄存器中Minutes部分的值
     * 实现方法:将timeOp位域中minutes的值直接返回即可
     */
    int getMinutes()
    {
        return timeOp.minutes;
    }
    
    
    seconds
    /*
     * 函数功能:修改寄存器中的Seconds部分的值
     * 实现方法:修改timeOp位域中seconds的值,将位域的值利用time指针,传至寄存器中
     */
    void SetSeconds(int seconds)
    {
        timeOp.seconds = seconds/2;
        *time = (u16)timeOp;  //通过强制转换的方式将值传给time指针,指针将值给寄存器
    }
    
    /*
     * 函数功能:返回寄存器中Seconds部分的值
     * 实现方法:将timeOp位域中seconds的值X2返回即可
     */
    int getSeconds()
    {
        return timeOp.seconds*2;
    }
    
    
  • 相关阅读:
    浅尝辄止——在C++中调用C#的回调函数——COM方式
    代码管理——如何连接Git Server,下载代码
    浅尝辄止——使用ActiveX装载WPF控件
    软件调试——CPU异常列表
    软件调试——IA-32 保护模式下寄存器一览
    Delphi面向对象编程
    看雪2017CTF第二题解法
    串操作指令
    MASM 重复汇编
    MASM 宏结构
  • 原文地址:https://www.cnblogs.com/protectmonarch/p/8182653.html
Copyright © 2011-2022 走看看