我可以使用 Python 编写 8051 吗?
我没有得到任何在 python 环境中编程 8051 的东西。
如果有人知道,请帮助我。
您好,我想知道是否有一种方法可以在微芯片的 dspic33 中实现看门狗定时器,而无需配置位,但只能在源代码本身中实现,谢谢 eran
所以我正在阅读有关 Atmel 328p 编程的内容,我希望能够对串行输入和输出进行编程,但我看到了一些我没有完全理解的内容:
UBRR0H 在此汇编代码中称为 UBRRnH:
USART_Init:
; Set baud rate
out UBRRnH, r17
out UBRRnL, r16
; Enable receiver and transmitter
ldi r16, (1<<RXENn)|(1<<TXENn)
out UCSRnB,r16
; Set frame format: 8data, 2stop bit
ldi r16, (1<<USBSn)|(3<<UCSZn0)
out UCSRnC,r16
ret
Run Code Online (Sandbox Code Playgroud)虽然在此 C 代码中它仍保留名称 UBRR0H:
#define FOSC 1843200 // Clock Speed
#define BAUD 9600
#define MYUBRR FOSC/16/BAUD-1
void main( void ) {
...
USART_Init(MYUBRR)
...
}
void USART_Init( unsigned int ubrr) {
/*Set baud rate */
UBRR0H = (unsigned char)(ubrr>>8); …Run Code Online (Sandbox Code Playgroud)问题很简单,我不知道在哪里以及如何实现传递函数。
假设我有一个经典系统

其中 P 具有二阶传递函数,zita=0.7,F=1,C 是过程调节器。
我想在 C 或 C++ 中的像 ATMega128P 这样的控制器上实现这个调节器。
过程的传递函数是通过实验方法确定的,调节器可能会根据过程传递函数而变化。
我应该从哪里开始?
我想知道嵌入式 C 编程中的驱动程序和库之间有什么区别。假设我使用的 uControllers 只有像 PIC 这样的应用程序代码/固件
我是这个引导加载程序的新手。我使用 SWD 对 stm3205 进行编程。所以当我对 stm32f05 微控制器进行编程时,我的程序在哪个位置。我可以制作自己的引导加载程序并将其替换为 st 的默认引导加载程序吗?
我已经在 XC8 编译器上编译了这个简单的代码,并将十六进制文件加载到 Picsimlab - 具有 PIC16f877a 微控制器的模拟器板(板 4)。
unsigned int x = 1;
char *ptr = (char *) &x;
if (*ptr == 1)
{
clcd_print("little Endian", LINE1(0));
}
else
{
clcd_print("big Endian", LINE1(0));
}
Run Code Online (Sandbox Code Playgroud)
输出:小端
那么我们可以推论Xc8编译器遵循小端字节序系统来编程PIC16f877a吗?
这是否也意味着 PIC16f877a 使用小端字节序系统将变量存储到其数据存储器中?
您能否提供指向有关字节排序系统的文档的链接,然后是 PIC16f877a 和 XC8 编译器?
我试图在我的微控制器中的内存地址处获取 的值。地址是 at 0x1fff7000,那是内存块的开始(所以之前的任何东西都是未定义的)。在我的代码中,我有char *ptr = (char *)BASE_ADDR;where #define BASE_ADDR ((uint32_t)0x1FFF7000)。我的价值0x1FFF7000是0x12345678,我 100% 知道它在那里。
在 GDB 中,我正在做(gdb) p/x *ptr,我的返回值是$6 = 0x78. 为什么它在0x78而不返回0x12345678甚至不返回0x12?
我正在为微控制器开发 C 代码,该代码从传感器获取输入并在字母数字字符 LCD 上输出来自传感器的数据以及其他字符串。我通常为此使用 sprintf,但我注意到当使用 sprintf 将浮点数格式化为字符串时,它占用了太多的程序内存空间,这在微控制器上是相当低的。(太多我的意思是从程序内存的 34% 直接跳到 99.2%)
所以我的问题是,是否有一种占用空间较少的方法来将浮点数格式化为字符串?我只关心方法有多简单。
我在 PIC16F877a 8 位 MCU 上使用带有 XC8 编译器的 MPLABX IDE。
非常感谢。
float tempC(unsigned int adc_value) {
multiplier = adc_value / 1023.0f;
tempC = -40 * multiplier * 90;
return tempC;
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用微控制器上的 ADC 将电位计转换为 -40 到 50 摄氏度之间的温度,这adc_value是 ADC 给出的范围,但是我得到了错误:
Main.c:110:11: 错误:非对象类型 'float (unsigned int)' 不可分配
如果需要,我可以提供更多代码,但我不知道哪里出错了,因为我对 C 和编程还很陌生。
microcontroller ×10
c ×7
pic ×2
stm32 ×2
8051 ×1
arduino ×1
assembly ×1
atmel ×1
bootloader ×1
embedded ×1
endianness ×1
low-level ×1
memory ×1
memory-leaks ×1
microchip ×1
printf ×1
python ×1
xc8 ×1