会汇编当然最好
#include <stdioh>
extern void swi_handler(void);
/中断处理子程序/
void do_swi(int num)
{
/
switch (num)
{
case 0x1:
case 0x2:
}
/
printf("%d helloworld\n", num);
}
//swi_handler
void install_swi_handler(void (fun)(void))
{
unsigned int cmd;
//1构造一条跳转指令
((unsigned int )0x38) = (unsigned int)fun;
cmd = 0xe59ff028;
//2把此指令机器码放到0x8地址
((unsigned int )0x8) = cmd;
}
int main(void)
{
int i = 0;
install_swi_handler(swi_handler);
for (i = 0; i < 10; i++) {
if (i == 3) {
__asm
{
swi 0x123
}
}
else
printf("aa\n");
}
return 0;
}
汇编和C都要经过编译处理转化成机器语言才能控制硬件,而机器语言就是用0和1组成的代码,表示高低电平,硬件识别的是高低电平,所以汇编语言和C并不是能直接控制硬件,还要经过编译处理的。
对了,当然和CPU的指令集有关了,不同的cpu的指令集稍微会有所差异,但是都会给出与一般的CPU的不同指令的资料。
在C语言里,我们一般控制的单片机硬件大多数是特殊寄存器,它们在C语言里的名称跟汇编的一样(注意是大写)。我们可以通过赋值如P1 = 0xff,来控制单片机硬件。我们也可以通过读如status = P1,来得到硬件的状态值等等。
以上就是关于编写驱动程序用c语言还是汇编语言还是控制硬件要在c中混编汇编可以给出一个例子的代码吗谢谢。全部的内容,包括:编写驱动程序用c语言还是汇编语言还是控制硬件要在c中混编汇编可以给出一个例子的代码吗谢谢。、为什么汇编和C语言可以直接控制硬件、单片机问题 单片机的硬件 在c语言里面都怎么表示 c语言都通过哪些方式 控制这些硬件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)