① 51单片机调用子程序问题
直接跳回主程序,再初始化。
② 51鍗曠墖鏈轰负浠涔堜笉鑳戒粠瀛愮▼搴忕洿鎺ヨ烦杞鑷充富绋嬪簭
51鍗曠墖鏈轰笉鑳戒粠瀛愮▼搴忕洿鎺ヨ烦杞鑷充富绋嬪簭鏄鍥犱负娌℃湁瑁よ¥姝g‘缂栬緫瀛愮▼搴忚皟鐢ㄨ鍙ャ傜紪杈戝瓙绋嬪簭鐨勮皟鐢ㄨ鍙ヨ捐′笉瑙勮寖浼氬艰嚧鏃犳硶杩涜岃浆鎹㈣儭鐗╃畝銆傛牴鎹鏌ヨ㈢浉鍏宠祫鏂欎俊鎭寰楃煡浣跨敤鍗曟満鐗囧繀椤诲眰娆″垎铓傞敭鏄庯紝涓嶅厑璁镐骇鐢熷唴澶栧眰寰鐜浜ゅ弶銆
③ 51单片机怎么把多个子程序做成头文件,然后调用
标准的做法:
timer.c 里面包含了函数声明,全局变量,函数体,
timer.h 里面使用#ifndef 语句,并且将外部需要使用的变量或函数加extern;
---------------------------------------------------
例:
timer.c:
#include "timer.h"
int timerCnt;
int timerStatu;
void TimerStart();
void TimerStop();
void TimerInit();
void TimerStart()
{}
void TimerStop()
{}
void TimerInit()
{}
--------------------------------------------------------
timer.h:
#ifndef __TIMER_H_
#define __TIMER_H_
//如果外部需要使用这些变量或函数,直接包含头文件即可。
//如果不对外开放的函数,就不需要添加
//注:在C源文件中,函数声明要补全
extern int timerCnt;
extern int timerStatu;
extern void TimerStart();
extern void TimerStop();
extern void TimerInit();
#endif
④ 51单片机实验:无符号双字节乘法运算子程序
以前搞的子程序库里的
(5) 标号: MULD 功能:双字节二进制无符号数乘法
入口条件:被乘数在R2、R3中,乘数在R6、R7中。
出口信息:乘积在R2、R3、R4、R5中。
影响资源:PSW、A、B、R2~R7 堆栈需求: 2字节
MULD: MOV A,R3 ;计算R3乘R7
MOV B,R7
MUL AB
MOV R4,B ;暂存部分积
MOV R5,A
MOV A,R3 ;计算R3乘R6
MOV B,R6
MUL AB
ADD A,R4 ;累加部分积
MOV R4,A
CLR A
ADDC A,B
MOV R3,A
MOV A,R2 ;计算R2乘R7
MOV B,R7
MUL AB
ADD A,R4 ;累加部分积
MOV R4,A
MOV A,R3
ADDC A,B
MOV R3,A
CLR A
RLC A
XCH A,R2 ;计算R2乘R6
MOV B,R6
MUL AB
ADD A,R3 ;累加部分积
MOV R3,A
MOV A,R2
ADDC A,B
MOV R2,A
RET