问题标签 [pic18]
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.
microcontroller - PIC18 上的中断仅触发一次
我试图让我的 PIC18F2550 上的 Timer1 每秒触发一次中断以进行倒计时。到目前为止,我已经能够正确建立中断优先级以及其他设置,但是我的 ISR 只触发一次。我已经设置了我的程序以将倒计时中剩余的秒数打印到 LCD 上,因此用户可以清楚地看到已经过去了多少次中断。我已确保清除 ISR 中正确的中断标志,因为对于大多数在 google 上遇到相同问题的人来说,这就是问题的根源,但这并没有解决问题。到目前为止,我的程序的其他所有内容都运行良好。
(为了测试是否触发了正确的优先级,低计数向上而不是向下计数)
这是代码片段
最终,我盯着一个上面有“31”的液晶显示器。可能是我没有正确设置一个标志,导致没有任何工作正常,但据我检查所有内容都已启用并正确清除。我究竟做错了什么?我会很感激任何帮助,这非常令人沮丧。
另外:我已经清除了所有断点,因此它不会在任何地方停止,并在编译时对最新版本进行编程。所以我已经排除了运行旧版本的代码。
编辑:为了澄清,此代码仅用于功能;它不会每秒触发一次,而是更快。一旦我让它工作,我将播放溢出计数以使其达到 1 秒。
c - 使用外部结构时 XC8 中的冲突声明
我有一个结构变量,在 .c 文件中定义:
为了使它在其他文件中可用,我有一个 .h 文件:
这适用于 Microchip C18 编译器。XC8 编译器给出错误:
c - 在 PIC18F 中实现定时器以生成随机数
自从我在这里没有发布任何内容以来已经有很多时间了。今天我来这里寻求帮助,以在 PIC18F 微控制器中实现定时器。我希望这个计时器用于将它用作 srand() 函数的种子......但是在这里搜索了很多之后我找不到解决这个问题的方法。
请你帮帮我。
来自新手的感谢。
c++ - 使用 PIC18f46k20 微控制器的中断
我是 C++ 的新手,在初始化我的电机速度控制项目所需的电阻器时遇到问题。我已经使用了数据表(下面的链接),但无法解决问题 PIC_datasheet
我遇到的两个问题
没有发生中断。中断过程的代码如下
当我启用全局中断即“INCONbits.GIE = 1”时,图片(LED 和屏幕)上没有任何显示,就好像它处于睡眠模式一样。
初始化。
中断服务
assembly - 使用 PIC18F452(组件)在双 7 段 LED 显示屏上显示 2 位数字
PIC18Fxx2数据表
可以在此处获得与我正在使用的 7segs 相关的数据表
编辑(15/4/2013):下面的代码是 PORTD 的指令字
首次执行代码时 TRISB、TRISD、PORTB 和 PORTD 的指令字
我想使用组装在 2 个七段 LED 显示器上显示两个不同的数字。我正在尝试使用下面列出的代码,但它不起作用。注:rdig = 右面板,ldig = 左面板,disp1 代表 1,依此类推。
输出应该是 81(在七段显示器上)没有出现任何数字。每个面板上只出现某种昏暗的灯光。但是,如果我试图在七段显示器的任一侧仅显示一个数字,则该代码有效。
编辑:我尝试使用TMR0N(b'00000000'指令字,tmrL = FF,tmrH = FB)为每个数字显示请求添加一个小延迟(2微秒),如下所示,右侧面板上仅显示数字1。
TMR0N 的指令设置
serial-port - MPlab 中的 RS232 通信
我正在使用 MPlab 从 pic 微控制器读取数据。我正在使用 pic18F87J11。我要读取的数据在 RS232 的 DB9 的引脚 3 上,我的 RS232 连接到 pic 微控制器。谁能帮助我或给我一个简单的示例代码来做到这一点?
谢谢,
c - PIC 18 / RS232 接收
我正在尝试从 RS232 连接接收一些数据(9600 kbps - 在(1)时发送“s”(并在超级终端上测试))
我正在使用 p18F8722 并在处理器上用 c 编写以下内容:
当我在 LCD 上打印时,我收到错误的字符,大多数时候是 "p" "q" x (bar)...
我真的很感激任何帮助。
c - Setting up a C project with multiple source files in MPLAB
I'm using the MPLAB IDE and the XC8 compiler for a C project for PIC18 devices. I'm building a project with multiple source files and don't know how to make the structure.
In the project, I have the following things:
- A file main.c where the main code is located. From here, several files are included:
- xc.h: to define chip-specific variables and so
- stdlib.h, stdio.h, plib.h, delays.h: for the compiler's functions
- enc28j60.h: a homebrew file with definitions and prototypes
- A file enc28j60.c, where the functions of the prototypes in enc28j60.h go
I cannot compile enc28j60.c as standalone file because it depends on definitions in main.c.
I have a few questions on how to set this project up:
- Should I add enc28j60.c to the source files of my MPLAB project? If I do this, MPLAB tries to compile the file, which fails. If I don't do this, the linker cannot find the symbols that are defined in enc28j60.c and prototyped in enc28j60.h.
- Should I
#include
enc28j60.c from somewhere? If not, how does MPLAB know where to get the file? - Should I add enc28j60.h to the header files of my MPLAB project?
- Should I
#include
enc28j60.h from somewhere? Right now, I do this in main.c, after the definitions enc28j60.h needs in order to run (and not throw#error
s).
c - 强制 printf 使用两个字符
我在带有 XC8 编译器的 PIC18 设备上使用此代码:
当some_value
低于时0xf0
,仅输出一位,例如c
值 12。在值高于0x0f
时,输出两位,例如42
值 66。
有没有办法强制printf()
输出两个字符,也在下面的值上0xf0
?
c - 在 PIC18 上从用户那里获取数组值?
首先让我展示什么是有效的,然后我将展示什么是无效的。这段代码给出了正确的结果。
输出:86000
如果我希望用户输入以下值,我会得到不同的结果,这就是我拥有的代码。
输出:619328
这不应该以同样的方式工作吗?那么当用户输入值时我得到不同的结果怎么办?谢谢!