找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 164|回复: 5
打印 上一主题 下一主题
收起左侧

请教关于KEIL C251编译器关于USING 0的使用语法问题

[复制链接]
跳转到指定楼层
楼主
ID:227818 发表于 2024-4-13 13:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一个单片机程序,关于R0到R7寄存器的使用,以前是通过设置RS0,RS1来区分,比如在一个中断中 执行 CLR RS0;CLR RS1,使用0区,在另一个中断中执行SETB RS0;CLR RS1,使用1区,在主程序中执行 SETB RS0,SETB RS1使用3区。现在我想在程序使用中对R0到R7的寄存器压栈处理,就是 PUSH AR0....PUSH AR7,发现在程序的开头中不使用  USING 语句定义寄存器区域的使用,编译就会出问题,出现下面的错误  : error A53: MISSING 'USING' INFORMATION,我是不是要把程序中所有的 CLR RS0;CLR RS1,替换成 USING 0,SETB RS0;CLR RS1 替换成 USING 1,SETB RS0,SETB RS1 替换成 USING 3?假设 我写成一下程序会怎样?

CLR  RS0;
CLR  RS1;
USING 3

就是关于使用using的机理是什么,谢谢大家。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1088185 发表于 2024-4-13 19:23 | 只看该作者
using 3 它不是CPU指令,所以不会翻译成任何CPU指令, 它只是告诉编译器这个寄存器组已用, 不要拿来放变量而已, 要转到Bank 3 就 ORL  PSW,#0x18
回复

使用道具 举报

板凳
ID:883242 发表于 2024-4-13 21:12 | 只看该作者
using就两个用途,一是AR0这样的别名,不写using汇编器不知道AR0到底在哪里。另一个用途是写relocatable代码的时候,using表示这个地方已经被使用了,链接的时候会避免在这里分配变量地址。
回复

使用道具 举报

地板
ID:227818 发表于 2024-4-15 08:06 | 只看该作者
1600277881 发表于 2024-4-13 19:23
using 3 它不是CPU指令,所以不会翻译成任何CPU指令, 它只是告诉编译器这个寄存器组已用, 不要拿来放变量 ...

谢谢您的回复,我再揣摩下。
回复

使用道具 举报

5#
ID:227818 发表于 2024-4-15 08:07 | 只看该作者
Hephaestus 发表于 2024-4-13 21:12
using就两个用途,一是AR0这样的别名,不写using汇编器不知道AR0到底在哪里。另一个用途是写relocatable代 ...

谢谢您的回复,using可以在程序中多次使用吗?
回复

使用道具 举报

6#
ID:883242 发表于 2024-4-15 11:51 | 只看该作者
newlined 发表于 2024-4-15 08:07
谢谢您的回复,using可以在程序中多次使用吗?

当然可以,using的有效期在写using这一行的下一行开始,直到遇到另一个using结束。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表