问题标签 [68hc12]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - C(微控制器)中函数错误的重新声明
我正在编写一个 HC6812 微控制器,我需要在 C 中使用 2 个函数来:
关闭端口 B 的 LED
读取 PTH(端口 H)上的开关输入位 0-4
在端口 A 的 7 段显示器上显示开关值。
将端口 B 上的所有 LED 点亮 0-31 秒(由开关设置)。
最后关闭端口 B 的所有 LED。
我的两个功能是Hexled
(读取 Hex 开关输入并在 7 段上显示)和wait
(创建延迟)。
当我编译代码时,我收到 4 个错误:
'pointer expected' 在我的Hexled
函数定义中出现了两次
'函数的参数声明冲突Hexled
'
'重新声明错误Hexled
'
我知道对于 C/C++ 中的函数,我们需要一个函数原型、一个函数定义,并且在主循环中我们调用该函数。我不明白我做错了什么并想从中学习,我尝试研究了许多 C 编程网页。
assembly - 使用 C 和 ASSEMBLY 在 LCD 屏幕上制作 GPS
我现在关心的一个问题是制作一些汇编语言子例程,这些子例程需要从 C 程序中调用,以便在 LCD 屏幕上进行 CountRoutes、FindRoutes 或 DisplayRoutes。例如,这是我保存路由地址的代码,对于第一个子例程 CountRoutes,它应该在找到 -1 并停止计数之前计算我在内存中有多少条路由。
这是我到目前为止所做的,但它不起作用。我需要改变的是:忽略 .byte 空行(跳转到下面的两个字符串),验证你是否在字符串的末尾(满足 0)并再次跳转直到你找到另一个 .word 6 或 -1。
loops - 简单的 for 循环和求和
我正在尝试学习 HCS12 汇编语言,但互联网上没有足够的示例。我试图编写代码,但没有成功。我被困住了。这不是绝对的功课。有人可以用 HCS12 汇编语言编写它并附上注释吗?我想要代码,因为我真的想一步一步地阅读它。顺便说一句,还有其他更简单的方法来定义数组吗?
我的尝试:
assembly - 将字符串转换为 int 程序集
我已经尝试编写代码好几个小时了。我的算法是逐字符读取字符串,减法#$30
,这意味着'0'
并将其保存在一个地址中。保存另一个用0填充的随机地址。然后直到字符串的末尾,将随机地址的内容乘以10,然后通过减法将用于转换int的地址的内容相加#$30
。我真的很累,很难实现我的算法。顺便说一句,我不知道这是否可能,但我想我不能使用 default multiplier EMUL
,因为它使用并写入 Y 和 D 寄存器。
一些伪:
我卡住的代码:
c - 在 C 中使用远指针时更改代码大小
我在一家主要从事汽车网络设计的软件公司部门工作。我们主要用 C 语言编写网络协议栈。最近,我被分配了一个项目,需要使用飞思卡尔的 HC12 控制器。最初编写的协议栈支持使用 unbanked RAM 以及 banked 和 unbanked flash。在分配给我的项目中,客户要求使用银行 RAM 而不是非银行 RAM(我不知道原因)。当我致力于这个项目的开发时,我意识到我可以使用远指针来访问(读/写)存储的 RAM。
我的问题是:当我使用远指针访问存储的 RAM 时,我的库代码大小增加了 10kbytes。这是正常的吗?在我正在使用的编译器(codewarrior)的参考手册中,提到远指针的大小为 3 个字节,而普通指针的大小为 2 个字节。这 1 个额外的字节真的会导致代码大小有如此大的差异吗?有没有其他方法不包括使用远指针,我仍然可以访问存储的 RAM?
任何对我的查询有帮助的答案将不胜感激。
delay - calculating delay cycles for hcs12
I try to calculate number of instruction cycles and delay cycles for HCS12. I have some information about HCS12
The HCS12 uses the bus clock (E clock) as a timing reference.
- The frequency of the E clock is half of that of the onboard clock oscillator (clock, 48 MHz, E-clock, 24 MHz).
- Execution times of the instructions are also measured in E clock cycles
I wonder the 24Mhz is crystal frequency? If so, only half of the crystal’s oscillator frequency is used for CPU instruction time. So, should it be halved?
How can I make 100-ms time delay for a demo board with a 24-MHz bus clock?
In order to create a 100-ms time delay, we need to repeat the preceding instruction sequence 60,000 times [100 ms ÷ (40 ÷ 24,000,000) μs = 60,000]. The following instruction sequence will create the desired delay:
There is an example but I don't understand how 60000
and 40
values are calculated.
codewarrior - 如何配置 flexray 节点以发送 16 字有效负载?
尝试在 Freescale NCV7383 演示中编辑 Flexray_UNIFIED_cfg.c(使用 CW5.1 和 MC9S12XF512)以发送具有不同帧 ID 的更大数据包以匹配我的汽车目标系统。你们中的任何一个人曾经摸过 flexray 吗?谢谢。
c - .o 文件中未定义的符号
我正在使用 icc12 制作一个包含三个文件的项目:
.s 文件,包含一系列汇编语言子程序
.h 文件,其中包含函数列表
.c 程序包含我调用子程序的主要代码
我的问题是,当我编译我的 C 程序时,编译器会显示以下错误:
我一直在对 .o 文件实际上是什么进行一些研究,并且我知道它是一个包含 CPU 可以理解的机器代码的目标文件。它们包含允许链接器查看它需要哪些符号才能工作的信息。尽管如此,我仍然不明白如何解决这些错误。我检查了任何语法错误,但似乎找不到任何语法错误。是否有人能够就如何在我的 .o 文件中“定义”这些符号提供一些帮助?
我的构建命令是
汇编文件的摘录_lcd_putstr
c - 提示用户按 c 中的某个键
我正在使用 icc12 (ImageCraft) 和 hc6812 微控制器。我想提示用户按下 LCD 键盘上的零键,以便下一个菜单出现在 LCD 显示屏上。我似乎无法让我的代码做到这一点。(按下零键 = 0b11110000)
键盘利用端口 H 的高 5 位,它有 16 个键(0-f),当按下的键为奇数时,最高位为高,按下的键为高时为低。端口 H 是一个输入端口,连接到我的 LCD 模块上的键盘。我正在尝试使用掩码来显示按下零键的时间,但是当我运行程序时,LCD 模块显示直接进入新菜单。屏蔽是最好的方法吗?如果是这样,我怎样才能更改我的 IF 语句以使代码正常运行?
c - 如何在c中缩放数字/数字范围
我希望能够在我的 LCD 模块上以英尺为单位显示从 0 英尺到 20000 英尺的高度。这些数字是从我可以旋转以更改值的电位计读取的。目前电位计显示的范围是 0 到 1023,但我需要适当地缩放这些,以便它们从 0 到 20000 英尺读取。除此之外,我希望下面的行显示一个“条形图”来表示高度增加。LCD 每行有 20 个块,因此条形图的范围可以从 1 个块到 20 个块。
到目前为止,这是我的代码。它从电位计读取值DELVAL2
并将其显示在 LCD 上。有人可以解释一下我如何适当地缩放数据以生成高度和条形图的方法。