我希望能够构建自己的小型电子设备,只需要几个按钮,并将每个按键存储在内存中.
我是一个非常有经验的程序员,但我不知道从哪里开始硬件,或在谷歌上搜索什么.
请给我任何可以帮助我的信息.
我正在使用带有微芯片v8.63的picdem 18F4550和C18编译器.
我将PortA设置为输入,我将在端口RA0上连接LDR.以下是(我认为)
TRISAbits.TRISA0 = 1; <= set RA0 as input
Run Code Online (Sandbox Code Playgroud)
现在我想要LDR的值(如果LED打开了电压/值),我可以说:
int colorLed = PortAbits.RA0;
Run Code Online (Sandbox Code Playgroud)
现在在int类型的变量中,有我的Led的值/电压.
如我错了请纠正我.
嗨,我正在使用MikroC编程一个微控制器,我有一个小于1024(2 ^ 10bit)的变量,我需要将其转换int value;为unsigned char value8bits;并将最低有效位放入unsigned char value2bits;
我其实在想使用>>位移不知道怎么回事?所以你怎么看 ?
我正在使用MikroC来尝试编程我的PIC16f62微控制器.我已经设法使我的输出工作(我可以打开LED等)但我似乎无法让输入工作.
这是我目前的代码:
void main() {
TRISB.RB0 = 0; //set Port RB0 as output
PORTB.RB0 = 1; //set Port RB0 to high (turn on LED)
TRISA = 1; //Set PORTA as inputs
for(;;){ //endless loop
if(PORTA.RA0 == 1){ //if push button is pressed
PORTB.RB0 = !PORTB.RB0; \\toggle LED
}
}
}
Run Code Online (Sandbox Code Playgroud)
我不知道问题是我没有正确配置PORT还是我正在检查按钮是否被错误按下.
任何帮助表示赞赏.谢谢.
16位机器可以对64位数据类型执行操作吗?
我知道它可以使用两个寄存器执行32位乘法,但不知道它如何处理64位数据?
我想在C中为我的Stellaris启动板编写一段代码,以便通过将库使用保持在最低限度来打开板载LED.令我惊讶的是,编译后的代码大小约为800字节.因此,为了检查编译器放入编译代码的内容,我使用了dissambler检查了汇编代码.它有很多代码,我没有编写C代码.我想知道这些代码的用途以及它是如何进入编译器设置的.我试图了解编译器的行为以及编译器正在做的幕后事务.请帮我.
这是我的C程序:
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/rom.h"
#include "driverlib/sysctl.h"
#define GPIOFBASE 0x40025000
#define GPIOCLK *((volatile unsigned long *)(0x400FE000 + 0x608))
#define FDIR *((volatile unsigned long *)(GPIOFBASE + 0x400))
#define FDEN *((volatile unsigned long *)(GPIOFBASE + 0x51C))
#define FDATA *((volatile unsigned long *)(GPIOFBASE + 0x3FF))
void main(void) {
ROM_SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ | SYSCTL_OSC_MAIN);
GPIOCLK |= (1<<5);
FDIR |= 0xE;
FDEN |= 0xE;
FDATA |= 0xE;
while (1);
}
Run Code Online (Sandbox Code Playgroud)
我使用的唯一API调用是使用Onchip ROM库设置时钟设置.请检查此pastebin上的dissambly代码:(主要:位于0x190.)
我正在stm32f4芯片上编写一个c ++应用程序,它有几个要控制的IO.我的一位同事建议为所有这些IO制作预处理器语句,以使代码更具可读性.
例如:
#define FAN_ON GPIO_SetBits(GPIOD, GPIO_Pin_0);
#define FAN_OFF GPIO_ResetBits(GPIOD, GPIO_Pin_0);
Run Code Online (Sandbox Code Playgroud)
这样就好了,如果没有,为什么?我还没有那么多的微控制器经验,但我读到在预处理器语句中不应该使用分号,我也不确定在预编译器语句中使用函数是否是一种好的风格?
谢谢您的帮助!
对不起那么难以捉摸的标题,但这是我将用来解释我的问题的代码片段!
while(motors[0].cycle <= maxcycle
&& motors[1].cycle <= maxcycle
&& motors[2].cycle <= maxcycle
&& motors[3].cycle <= maxcycle
&& motors[4], etc ...)
Run Code Online (Sandbox Code Playgroud)
我如何避免为while()循环键入这个非常长的条件,因为我总是检查相同的参数,只有我的结构的索引正在改变.
当8051上电时,堆栈指针寄存器包含的值07h不是00h?
我试图弄清楚如何在Nucleo板上切换LED,我只是看不到用户LED切换.在网上看来,这就是你要做的一切.还有其他人遇到过这个问题吗?
#include "stm32f4xx.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"
int main(void)
{
int counter = 0;
SystemInit();
GPIO_InitTypeDef temp;
temp.GPIO_Mode = GPIO_Mode_OUT;
temp.GPIO_OType = GPIO_OType_PP; // Push Pull
temp.GPIO_Pin = GPIO_Pin_5;
temp.GPIO_Speed = GPIO_Low_Speed;
temp.GPIO_PuPd = GPIO_PuPd_NOPULL;
RCC_APB2PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
GPIO_Init( GPIOA, &temp );
while( 1 )
{
if ( counter++ > 10000 )
{
GPIO_ToggleBits( GPIOA, GPIO_Pin_5 );
counter = 0;
}
}
}
Run Code Online (Sandbox Code Playgroud) microcontroller ×10
c ×7
embedded ×5
pic ×2
stm32 ×2
8051 ×1
arduino ×1
arm ×1
c++ ×1
disassembly ×1
input ×1
microchip ×1
mikroc ×1
nucleo ×1
precompiler ×1
stm32f4 ×1
while-loop ×1