导航:首页 > 软件知识 > 复位程序怎么写

复位程序怎么写

发布时间:2023-11-10 00:16:33

㈠ 如何使用单片机C语言实现复位

可以使用下面的程序跳到0000H实现软复位,下面的程序实际上是一个函数指针,指针指向了0000H地址。
((void
(code
*)
(void))
0x0000)
();
下面的例子将实现软件自复位void
reset
(void)
{
((void
(code
*)
(void))
0x0000)
();
}
void
main
(void)
{
reset
();
}
你可能注意到以上的软复位程序并不能清除8051的中断系统和某些8051的外围设备,当您在中断程序中调用上面的软件复位程序后,中断将再不能触发。因此,以上的软复位程序不能在中断子程序中调用。
下面的小段汇编函数可以在中断程序或主程序中调用,该函数将0x0000压栈,然后通过“RETI”出栈,这将清除中断环境并让程序从0000H重新开始运行。
?PR?RESET
SEGMENT
CODE
RSEG
?PR?RESET
;
C
prototype:
void
reset
(void);
PUBLIC
reset
reset:
POP
ACC
;
pop
return
address
POP
ACC
CLR
A
;
push
0
as
new
PUSH
ACC
;
return
address
to
stack
PUSH
ACC
RETI
;
execute
return
of
interrupt
END
以上程序在选择bank
0寄存器组时工作良好,假如选择的不是bank0寄存器组,那么可能无法获得预料的结果。你应该在以上的程序或启动代码中加上“MOV
PSW,
#0”来选择bank
0寄存器组。
以上文章由龙啸九天翻译自KEIL
FAQ,可能有疏漏,欢迎提出。

㈡ 如何从程序中开始复位

程序控制的软件复位方法
微处理器复位方法:

用硬件引脚RESET的复位方法;

用看门狗的复位方法;

自己程序控制的复位方法(本文方法,叫软件复位)。

软件复位实现方法

首先声明一个函数指针,指向复位后要开始执行指令的位置:

void (*app_start)(void) = 0x0000;

可以根据具体微处理器复位后的位置,修改后边的地址。

之后,在自己的程序中想复位的地方调用app_start(); 也就是跳到0x0000位置执行指令。

可以根据不同微处理器复位的地址,修改上边的地址(0x0000)。实现上你可以跳到任何位置执行,或调用函数执行。

实例测试

以下以Arino为开发环境来测试。注意:在AVR微处理器中,为了使Arino复位时不再进入引导区,使AVR设置BOOTRST设置为1。

使用函数指针复位方法如下,你能想象到下边的程序会使LED灯闪亮吗?

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

///0. 引脚定义
#define LED_PIN 13 //定义LED引脚为13号数据引脚(DIG13)
static void (*reset_this_CPU)(void) = 0x0000; // ***复位本CPU函数指针
///1. 初始化
void setup() {
pinMode(LED_PIN, OUTPUT); // 初始化DIG13为输出
digitalWrite(LED_PIN, HIGH); //DIG13输出高电平
delay(1000); //延时1秒
digitalWrite(LED_PIN, LOW); //DIG13输出低电平
delay(1000); //延时1秒
reset_this_CPU(); //***跳到0x0000地址指针,也就是复位
}
///2. 循环
void loop() {

//此处什么也没有啊!
}

结论
用本方法,可以用软件方式进行复位,也可以用这个函数指针的方法调用任何函数。

阅读全文

与复位程序怎么写相关的资料

热点内容
哪里学宏程序 浏览:697
知网节页面可以查到作者哪些信息 浏览:708
代理合同无效如何起诉 浏览:377
团队中如何开拓市场 浏览:206
农产品如何做网店 浏览:582
成都摩配市场租金多少 浏览:811
3d技术发展的怎么样了 浏览:150
预测数据集怎么选 浏览:417
雷克萨斯的混动技术好在哪里 浏览:286
什么是资源税非应税产品 浏览:690
市场上哪里能买到牛肥肉 浏览:76
无需技术职业有哪些 浏览:298
市场上的青椒是怎么种的 浏览:799
手游代理如何拉人 浏览:879
擒敌术应用技术科目有哪些 浏览:907
需要通过什么司法程序 浏览:926
苹果电脑如何删除软件在程序坞 浏览:504
季节性调整数据取多少 浏览:687
dd37交易成功什么时候能提现 浏览:507
无锡母婴信息管理系统花费多少 浏览:499