MPLAB® C30 C 编译器用户指南

MPLAB® C30 C 编译器用户指南 MPLAB® C30 C 编译器用户指南

ie.ksu.edu.tw
from ie.ksu.edu.tw More from this publisher
10.07.2015 Views

MPLAB ® C30 用 户 指 南处 理 器 头 文 件 的 约 定 是 , 使 用 器 件 数 据 手 册 中 的 寄 存 器 名 对 每 一 个 SFR 命 名 。 例 如 ,CORCON 指 内 核 控 制 寄 存 器 。 如 果 SFR 中 有 一 些 重 要 的 位 , 因 此 头 文 件 中 还 有 为 该SFR 定 义 的 结 构 , 结 构 名 与 SFR 的 名 字 相 同 , 只 是 在 后 面 附 加 了 “bits”。 例 如 ,CORCONbits 是 内 核 控 制 寄 存 器 的 结 构 。 使 用 数 据 手 册 中 位 的 名 字 命 名 结 构 中 的 各 位( 或 位 域 ), 如 PSV 表 示 CORCON 寄 存 器 中 的 PSV 位 。 下 面 是 对 CORCON 的 完 整 定义 ( 将 来 可 能 会 有 所 变 化 ):/* CORCON: CPU Mode control Register */extern volatile unsigned int CORCON __attribute__((__near__));typedef struct tagCORCONBITS {unsigned IF :1; /* Integer/Fractional mode */unsigned RND :1; /* Rounding mode */unsigned PSV :1; /* Program Space Visibility enable */unsigned IPL3 :1;unsigned ACCSAT :1; /* Acc saturation mode */unsigned SATDW :1; /* Data space write saturation enable */unsigned SATB :1; /* Acc B saturation enable */unsigned SATA :1; /* Acc A saturation enable */unsigned DL :3; /* DO loop nesting level status */unsigned :4;} CORCONBITS;extern volatile CORCONBITS CORCONbits __attribute__((__near__));注 :符 号 CORCON 和 CORCONbits 指 同 一 个 寄 存 器 , 在 链 接 时 将 解 析 为 同 一地 址 。6.4 寄 存 器 定 义 文 件第 6.3 节 “ 处 理 器 头 文 件 ” 中 描 述 的 处 理 器 头 文 件 指 定 了 每 个 器 件 的 所 有 SFR, 但 并未 定 义 SFR 的 地 址 。 support\gld 目 录 中 有 每 个 器 件 的 链 接 描 述 文 件 。 链 接 描 述 文件 定 义 了 SFR 的 地 址 。 要 使 用 链 接 描 述 文 件 , 指 定 链 接 器 命 令 行 选 项 :-T p30fxxxx.gld其 中 xxxx 指 器 件 的 型 号 。例 如 , 假 定 有 一 个 名 为 app2010.c 的 文 件 , 它 包 含 PIC30F2010 器 件 的 一 个 应 用 程序 , 则 可 使 用 下 面 的 命 令 行 编 译 和 链 接 这 个 文 件 :pic30-gcc -o app2010.o -T p30f2010.gld app2010.c-o 命 令 行 选 项 命 名 输 出 COFF 可 执 行 文 件 , -T 选 项 给 出 PIC30F2010 器 件 的 名 称 。如 果 在 当 前 的 目 录 中 找 不 到 p30f2010.gld, 链 接 器 将 在 已 知 的 库 路 径 中 搜 索 。 对 于默 认 的 安 装 , 链 接 描 述 文 件 包 含 在 PIC30_LIBRARAY_PATH 中 。 更 多 信 息 参 见 第 3.6节 “ 环 境 变 量 ”。DS51284C_CN 第 80 页© 2005 Microchip Technology Inc.

器 件 支 持 文 件6.5 使 用 特 殊 功 能 寄 存 器在 应 用 程 序 中 使 用 特 殊 功 能 寄 存 器 时 要 遵 循 以 下 三 个 步 骤 :1. 包 含 所 使 用 器 件 的 处 理 器 头 文 件 。 这 样 能 提 供 该 型 号 器 件 特 殊 功 能 寄 存 器 的 源代 码 。 例 如 , 下 面 的 语 句 包 含 了 PIC30F6014 器 件 的 头 文 件 :#include 2. 像 访 问 任 何 其 他 C 变 量 一 样 访 问 特 殊 功 能 寄 存 器 。 源 代 码 可 对 特 殊 功 能 寄 存 器 进行 读 和 写 。例 如 , 下 面 的 语 句 将 Timer1 特 殊 功 能 寄 存 器 中 的 所 有 位 清 零 。TMR1 = 0;下 面 一 条 语 句 中 的 T1CONbits.TON 表 示 T1CON 寄 存 器 中 的 第 15 位 , 即 “ 定 时器 开 启 ” 位 。 这 条 语 句 将 名 为 TON 的 位 置 1 来 启 动 定 时 器 。T1CONbits.TON = 1;3. 链 接 相 应 器 件 的 寄 存 器 定 义 文 件 或 链 接 描 述 文 件 。 链 接 器 提 供 特 殊 功 能 寄 存 器 的地 址 。( 请 记 住 位 结 构 在 链 接 时 具 有 和 SFR 相 同 的 地 址 )。 例 6.1 将 使 用 :p30f6014.gld关 于 使 用 链 接 描 述 文 件 的 更 多 信 息 , 请 参 阅 MPLAB ASM30, MPLAB LINK30 andUtilities User's Guide (DS51317)。下 面 的 例 子 是 实 时 时 钟 的 示 例 代 码 。 它 使 用 了 几 个 特 殊 功 能 寄 存 器 。 这 些 特 殊 功 能 寄存 器 的 描 述 参 见 p30f6014.h 文 件 。 该 文 件 将 和 特 定 于 器 件 的 链 接 描 述 文 件p30f6014.gld 相 链 接 。© 2005 Microchip Technology Inc. DS51284C_CN 第 81 页

MPLAB ® <strong>C30</strong> 用 户 指 南处 理 器 头 文 件 的 约 定 是 , 使 用 器 件 数 据 手 册 中 的 寄 存 器 名 对 每 一 个 SFR 命 名 。 例 如 ,CORCON 指 内 核 控 制 寄 存 器 。 如 果 SFR 中 有 一 些 重 要 的 位 , 因 此 头 文 件 中 还 有 为 该SFR 定 义 的 结 构 , 结 构 名 与 SFR 的 名 字 相 同 , 只 是 在 后 面 附 加 了 “bits”。 例 如 ,CORCONbits 是 内 核 控 制 寄 存 器 的 结 构 。 使 用 数 据 手 册 中 位 的 名 字 命 名 结 构 中 的 各 位( 或 位 域 ), 如 PSV 表 示 CORCON 寄 存 器 中 的 PSV 位 。 下 面 是 对 CORCON 的 完 整 定义 ( 将 来 可 能 会 有 所 变 化 ):/* CORCON: CPU Mode control Register */extern volatile unsigned int CORCON __attribute__((__near__));typedef struct tagCORCONBITS {unsigned IF :1; /* Integer/Fractional mode */unsigned RND :1; /* Rounding mode */unsigned PSV :1; /* Program Space Visibility enable */unsigned IPL3 :1;unsigned ACCSAT :1; /* Acc saturation mode */unsigned SATDW :1; /* Data space write saturation enable */unsigned SATB :1; /* Acc B saturation enable */unsigned SATA :1; /* Acc A saturation enable */unsigned DL :3; /* DO loop nesting level status */unsigned :4;} CORCONBITS;extern volatile CORCONBITS CORCONbits __attribute__((__near__));注 :符 号 CORCON 和 CORCONbits 指 同 一 个 寄 存 器 , 在 链 接 时 将 解 析 为 同 一地 址 。6.4 寄 存 器 定 义 文 件第 6.3 节 “ 处 理 器 头 文 件 ” 中 描 述 的 处 理 器 头 文 件 指 定 了 每 个 器 件 的 所 有 SFR, 但 并未 定 义 SFR 的 地 址 。 support\gld 目 录 中 有 每 个 器 件 的 链 接 描 述 文 件 。 链 接 描 述 文件 定 义 了 SFR 的 地 址 。 要 使 用 链 接 描 述 文 件 , 指 定 链 接 器 命 令 行 选 项 :-T p30fxxxx.gld其 中 xxxx 指 器 件 的 型 号 。例 如 , 假 定 有 一 个 名 为 app2010.c 的 文 件 , 它 包 含 PI<strong>C30</strong>F2010 器 件 的 一 个 应 用 程序 , 则 可 使 用 下 面 的 命 令 行 编 译 和 链 接 这 个 文 件 :pic30-gcc -o app2010.o -T p30f2010.gld app2010.c-o 命 令 行 选 项 命 名 输 出 COFF 可 执 行 文 件 , -T 选 项 给 出 PI<strong>C30</strong>F2010 器 件 的 名 称 。如 果 在 当 前 的 目 录 中 找 不 到 p30f2010.gld, 链 接 器 将 在 已 知 的 库 路 径 中 搜 索 。 对 于默 认 的 安 装 , 链 接 描 述 文 件 包 含 在 PI<strong>C30</strong>_LIBRARAY_PATH 中 。 更 多 信 息 参 见 第 3.6节 “ 环 境 变 量 ”。DS51284C_CN 第 80 页© 2005 Microchip Technology Inc.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!