导航:首页 > 操作系统 > MCS51单片机应用开发实用子程序

MCS51单片机应用开发实用子程序

发布时间:2022-07-08 11:39:31

❶ MCS51,四字节浮点数的四则运算子程序

程序很长,直接告诉你不好看懂,可设法搞到北京航空航天大学出版社的“MCS-51/196单片机浮点程序和实用程序”这本书,有详细介绍。该社网址:www.buaapress.com.cn

❷ 那位有51单片机的实用子程序,c语言的

给个简单的吧,在C中称为函数调用由主函数调用其他函数,除主函数不能被调用外其他函数之间可任意调用

#include<reg52.h> //头文件

void delay(unsigned long w)
{
while(w--);
}

void zuoyi() //函数功能使P0口流水灯
{
unsigned char c;

for(c=0x01;x!=0;c<<=1)
{
P0=c;
delay(50000); //在此函数中调用延时函数
}
}

void main()
{
while(1)
{
zuoyi(); //在主函数中调用子函数
}
}

❸ 单片机8051基础编程

51程序库
http://www.programfan.com/blog/article.asp?id=19116
http://workingon.bokee.com/viewdiary.12218674.html

MCS-51单片机实用子程序库
http://blog.tom.com/fangqidong/article/416.html

❹ 谁有MCS51系列单片机中调用指令(LCALL和ACALL)和RETI指令在程序中的实际应用例子

CALL、RETI等等都是是汇编语言,看看这里:
http://hi..com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/3aec3b94b94e1a46d1135e98.html

另外,ACALL、LCALL,在编程的时候,可以统一写成CALL,
编译软件来智能的确认,应该使用ACALL还是LCALL。

❺ 利用mcs-51单片机指令系统设计一段交通灯轮流点亮的程序

参考程序, 具体留言商议。

ORG 0000H
LJMP MAIN
ORG 0100H
MAIN:
MOV SP,#60H
; LCALL DIR ;调用日期、时间显示子程序
LOOP:
MOV P1,#0FFH
LJMP TEST
LCALL ROAD1 ;路口1的车直行时各路口灯亮情况
LCALL DLY30s ;延时30秒
MOV P1,#0FFH ;恢复P1口高电平
LCALL RESET ;恢复8155各口为高电平
LCALL YELLOW1 ;路口1的车直行-->路口2的车直行黄灯亮情况
LCALL DLY5s ;延时5秒
LCALL RESET ;恢复8155各口为高电平
MOV P1,#0FFH ;恢复P1口
LCALL ROAD2 ;路口2的车直行时各路口灯亮情况
LCALL DLY30s ;延时30秒
LCALL RESET ;恢复8155A 、B口为高电?
MOV P1,#0FFH ;恢复P1口高电平
LCALL YELLOW2 ;路口2的车直行-->路口3的车直行黄灯亮情况
LCALL DLY5s ;延时5秒
LCALL RESET ;恢复8155A 、B口为高电?
MOV P1,#0FFH ;恢复P1口高电平
LCALL ROAD3 ;路口3的车直行时各路口灯亮情况
LCALL DLY30s ;延时30秒
LCALL RESET ;恢复8155A 、B口为高电?
MOV P1,#0FFH ;恢复P1口高电平
LCALL YELLOW3 ;路口3的车直行-->路口4的车直行黄灯亮情况
LCALL DLY5s ;延时5秒
LCALL RESET ;恢复8155各口为高电平
MOV P1,#0FFH ;恢复P1口高电平
LJMP TEST
LCALL ROAD4 ;路口4的车直行时各路口灯亮情况
LCALL DLY30s ;延时30秒
SETB P1.5 ;恢复P1.5高电平
SETB P1.4 ;恢复P1.4高电平
MOV DPTR,#0FFFFH ;恢复8155各口为高电平
LCALL YELLOW4 ;路口4的车直行-->路口1的车直行黄灯亮情况
LCALL DLY5s ;延时5秒
SETB P1.6 ;恢复P1.6高电平
SETB P1.3 ;恢复P1.3高电平
MOV DPTR,#0FFFFH ;恢复8155各口为高电平
LJMP LOOP
;路口1的车直行时各路口灯亮情况3a3b2p绿3c红+4a4b4c3p全红+1c绿1a1b4p红+2c绿2a2b1p红
ROAD1:
MOV DPTR,#7F00H ;置8155命令口地址;无关位为1)
MOV A,#03H ;A口、B口输出,A口、B口为基本输入输出方式
MOVX @DPTR,A ;写入工作方式控制字
INC DPTR ;指向A口
MOV A,#79H ;1a1b4p红1c绿2a2b1p红
MOVX @DPTR,A
INC DPTR ;指向B口
MOV A,#0E6H ;3a3b2p绿3c红4a4b3p红
MOVX @DPTR,A
MOV P1,#0DEH ;4c红2c绿
RET

❻ MCS-51单片机,利用定时计数器设计一个程序,汇编语言,最好有注释,很简单的就可以

ORG
0000H
JMP
BEGIN
ORG
0030H
TABLE:
;
共阴极数码管显示代码表
DB
3FH,06H,5BH,4FH,66H
;01234
DB
6DH,7DH,07H,7FH,6fh
;56789
DELAY:
MOV
R5,#20
LOOP4:
MOV
R6,#50H
;延时20X20ms
LOOP5:
MOV
R7,#100
DJNZ
R7,$
DJNZ
R6,LOOP5
DJNZ
R5,LOOP4
RET
;---------------------------------------
BEGIN:
MOV
P2,#0FFH
;P2口置高电平,准备接收信号
MOV
R4,#0
MOV
A,R4
;R4位标志值送A寄存器
AGAIN:
MOV
DPTR,#TABLE
MOVC
A,@A+DPTR
MOV
P1,A
LOOP1:
MOV
A,P3
;
接收p3口的抢答信号
CPL
A
JZ
LOOP1
LOOP2:
RRC
A
;有人抢答信号则逐次移动判断哪一位抢答
INC
R4
JNC
LOOP2
;********************
MOV
A,R4
MOVC
A,@A+DPTR
;找到相应位显示代码
MOV
P1,A
LEDDIS:
MOV
A,#0FFH
CLR
C
LEDDIS1:
RLC
A
DJNZ
R4,LEDDIS1
MOV
P0,A
LOOP3:
JNB
P2.2,BEGIN
;若主持人按下复位信号键,则转向主程序
CPL
P2.0
;若没按复位信号键,则通过p2.2口给出高低信号驱动蜂鸣器
LCALL
DELAY
;调用延时子程序
SJMP
LOOP3
;p2.2口反复间隔0.4s变化,驱动蜂鸣器
END

❼ MCS51单片机,中断服务程序的返回指令和子程序的返回指令有什么区别是多少

RET用于一般程序的返回
RETI用于中断函数的返回
以上是一般单片机书籍简绍的,然而在实际应用中,我发现,在程序返回中一样可以使用RETI,而在中断返回中却无法使用RET,究其原因是因为RETI比RET多做一件事情就是将“优先级生效”触发器清零
原来在8051构架中--中断系统中含有两个不可寻址的“优先级生效”触发器。一个用于指出CPU是否正在执行高优先级的中断服务程序,这个触发器为1时,系统将屏蔽所有的中断请求;另一个则指出CPU是否正在执行低优先级中断服务程序,该触发器为1时,将阻止除高优先级以外的一切中断请求。由此可见,若要响应同级甚至是低级中断请求,必须使得该“优先级生效”触发器清零。但该触发器又是不可寻址的,所以无法用软件直接清零。”

❽ 用MCS51单片机的汇编语言,编二级循环嵌套子程序,实现50毫秒的延时,震荡频率为12MHz,要写出计算过程。

要想精确定时,应该用定时器。
用子程序来延时的应用场合,基本都是不要求精确的。

所以,其延时时间,并没有必要精确计算。
一般,都是估计一下、试验一下,差不多就行了。

计算过程,没有。

❾ 设计一个MCS—51系列单片机具体应用的例子,并进行详细的解释

;简单的时钟程序

BUFF_KEY EQU 21H ;键盘键
LED1 EQU 22H ;数码管显示缓存
LED2 EQU 23H
LED3 EQU 24H
LED4 EQU 25H
LED5 EQU 26H
LED6 EQU 27H
LED_LP EQU 28H ;T0键盘显示扫描缓存
HOR EQU 30H ;小时值缓存
MIN EQU 31H ;分钟值缓存
SEC EQU 32H ;秒值缓存
F_BEEP BIT 01H
LED_PORT EQU P0
DIG_PORT EQU P2

SW1 BIT P3.0
SW2 BIT P3.1
SW3 BIT P3.2
SW4 BIT P3.3
SW5 BIT P3.4
SW6 BIT P3.5
BEEP BIT P1.6

org 000h
JMP main
ORG 00BH
JMP T0_INT
ORG 100H
MAIN: MOV SP ,#40H
MOV PSW,#00H
MOV R0,#7FH ;初始化RAM区,
CLR_RAM:MOV A,#00H
MOV @R0,A
DJNZ R0,CLR_RAM
MOV P1,0FFH ;INIT
MOV P2,0FFH
MOV P0,0FFH
MOV P3,0FFH
MOV HOR,#12
MOV TMOD,#21h
MOV TH0,#240 ;T0=4MS
MOV TL0,#96
SETB TR0
SETB ET0
SETB EA

WAIT_KEY: ;等候按键!
JNB SW1,SW1_OK
JNB SW2,SW2_OK
JNB SW3,SW3_OK
JNB SW4,SW4_OK
JNB SW5,SW5_OKA
JNB SW6,SW6_OKA
JMP WAIT_KEY
SW5_OKA: JMP SW5_OK
SW6_OKA: JMP SW6_OK
SW1_OK: MOV A,HOR
CJNE A,#24,SW1_OVER
MOV HOR,#00H
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
CLR F_BEEP
JMP WAIT_KEY
SW1_OVER:INC HOR ;时加1
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
CLR F_BEEP
JMP WAIT_KEY

SW2_OK: MOV A,HOR
CJNE A,#00,SW2_OVER
MOV HOR,#23
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
CLR F_BEEP
JMP WAIT_KEY
SW2_OVER:DEC HOR ;时减1
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
JMP WAIT_KEY

SW3_OK: MOV A,MIN
CJNE A,#59,SW3_OVER
MOV MIN,#00H
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
CLR F_BEEP
JMP WAIT_KEY
SW3_OVER:INC MIN ;分加1
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
CLR F_BEEP
JMP WAIT_KEY

SW4_OK: MOV A,MIN
CJNE A,#00,SW4_OVER
MOV MIN,#59
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
CLR F_BEEP
JMP WAIT_KEY
SW4_OVER:DEC MIN ;分减1
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
CLR F_BEEP
JMP WAIT_KEY

SW5_OK: MOV A,SEC
CJNE A,#59,SW5_OVER
MOV SEC,#00H
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
CLR F_BEEP
JMP WAIT_KEY
SW5_OVER:INC SEC ;秒加1
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
CLR F_BEEP
JMP WAIT_KEY

SW6_OK: MOV A,SEC
CJNE A,#00,SW6_OVER
MOV HOR,#59
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
CLR F_BEEP
JMP WAIT_KEY
SW6_OVER:DEC SEC ;时减1
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
CLR F_BEEP
JMP WAIT_KEY

DEL: MOV R5,#03 ;为演示方便,人为插入的延时
DEL01: MOV R6,#200
DEL02: MOV R7,#200
DJNZ R7,$
DJNZ R6,DEL02
DJNZ R5,DEL01
RET

BIN_BCD: MOV B,#10
DIV AB
RET

;------------- T0 INTRRUPT 数码管扫描定时中断---------------------------
T0_INT: PUSH ACC
PUSH PSW
MOV TH0,#240 ;T0=4MS
MOV TL0,#96
INC LED_LP
MOV A,LED_LP
CJNE A,#250,CONT_SCAN ;250*4MS=1S
MOV LED_LP,#00H
INC SEC
MOV A,SEC
CJNE A,#60,CONT_SCAN
MOV SEC,#00H
INC MIN
MOV A,MIN
CJNE A,#60,CONT_SCAN
MOV MIN,#00H
INC HOR
MOV A,HOR
CJNE A,#24,CONT_SCAN
MOV HOR,#00H
clr beep
clr p1.0
lcall del
setb beep
setb p1.0
CONT_SCAN:MOV A,SEC
LCALL BIN_BCD
MOV LED6,B
MOV LED5,A
MOV A,MIN
LCALL BIN_BCD
MOV LED4,B
MOV LED3,A
MOV A,HOR
LCALL BIN_BCD
MOV LED2,B
MOV LED1,A
MOV A,LED_LP
MOV B,#06
DIV AB
MOV A,B
RL A
MOV DPTR,#TAB_SCAN
JMP @A+DPTR
TAB_SCAN: AJMP SCAN_L1
AJMP SCAN_L2
AJMP SCAN_L3
AJMP SCAN_L4
AJMP SCAN_L5
AJMP SCAN_L6
SCAN_L1: MOV DIG_PORT,#11111110B
MOV A,LED1
JMP END_SCAN
SCAN_L2: MOV DIG_PORT,#11111101B
MOV A,LED2
JMP END_SCAN
SCAN_L3: MOV DIG_PORT,#11110111B
MOV A,LED3
JMP END_SCAN
SCAN_L4: MOV DIG_PORT,#11101111B
MOV A,LED4
JMP END_SCAN
SCAN_L5: MOV DIG_PORT,#10111111B
MOV A,LED5
JMP END_SCAN
SCAN_L6: MOV DIG_PORT,#01111111B
MOV A,LED6
END_SCAN: MOV DPTR,#TAB_LED
MOVC A,@A+DPTR
MOV LED_PORT,A
JNB F_BEEP,EXIT_T0
CLR BEEP
EXIT_T0: POP PSW
POP ACC
RETI

TAB_LED: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;共阳字码表

END

❿ 单片机,利用MCS-51集成开发环境编程:

A005光盘目录

1、一组C-51的程序设计 2、C51设计遥控器
3、Franklin C-51手册 4、一个C51讨论组的压缩包1
5、FrankLin For Windows使用经验谈 6、AT89C 系列单片机解密原理
7、一个C51讨论组的压缩包 8、微型打印机的C语言源程序
9、6B595或74HC595的C语言源程序 10、24C02串行EEPROM的C语言源程序
11、日历时钟DS12887或146818的C语言源程序 12、串行4路DAC TLC5620的C语言源程序
13、串行8位ADC TLC0831或TLC0832的C语言源程序 14、电力载波芯片PM2300与89C2051的接口电路
15、80C31与PC机AT总线接口卡 16、传感器信号采集电路
17、双音频红外接收和5087键盘电路 18、双音频8870接收电路
19、双音频红外遥控器发射电路 20、用74373,74573锁存器扩展I/O端口的方法
21、用74164串入并出移位寄存器扩展89C2051输出端口 22、用74165并入串出移位寄存器扩展89C2051输入端口
23、6位LED数码管显示模块 24、8位LED显示板
25、MPLAB集成开发环境软件 26、MPASM用户指南(包括MPLINK和MPLIB)
27、1000米语音立体声调频发射

28、315M遥控发射/接收电路的制作
29、微波报警器 30、定时控制器
31、装在火柴盒里的窃听器
32、远距离FM调频发射电路

33、10公里双向可视对讲系统 34、LED显示电脑电子钟
35、可直接用于无线发射的UHF频段调制盒 36、调频广播发射机
37、一个多用途信号发生器
38、实用电动窗帘电路
39、无线电遥控发射、接收头的制作 40、串行E2PROM--24C××读写器
41、PIC单片机编程器的自制 42、初学单片机几个不易掌握的概念

43、用单片机实现通用存贮器IC卡的读写 44、EM78系列单片机原理与应用技术
45、印刷电路板的基本设计方法和原则要求 46、Intel hex 文件格式解密
47、自制2051单片机编程器 48、AT89C系列单片机烧写器的自制
49、利用80C31单片机串行口实现多个LED

显示的一种简单方法
50、基于PIC单片机的智能IC卡燃气表电控系统设计

51、由单片机和多片DS1820组成的

多点温度测控系统 52、MCS-51系列单片机在SDH系统中的应用

53、异种单片机共享片外存储器及其与微机通信的方法 54、基于Intel80C196的通用伺服控制系统

55、12位A/D转换器ADS7804与51单片机的接口及程序设计

56、12位500KHz六通道同时采样的A/D转换器ADS7864及应用

57、单片机大容量FLASHRAM的扩展
58、单片机外围电路中的低功耗技术

59、基于MC68HC05CL16的可配置型电话计费器的设计和实现
60、W78E516及其在系统编程的实现

61、AVR单片机在柴油机转速测量中的应用

62、串行EEPROM X24128及其与AT89C51的接口及编程

63、用多路复用器扩展MCU串口

64、一种高性能便携式PIC单片机湿度检测仪的研制

65、单片机微处理器AT89C51在时隙变换和

控制中的应用
66、自制MSP430FET140仿真器的原理图和PCB板图

阅读全文

与MCS51单片机应用开发实用子程序相关的资料

热点内容
量柱比前一天多源码 浏览:416
电子书app怎么上传 浏览:66
国家反诈中心app注册怎么开启 浏览:804
全波差分傅里叶算法窗长 浏览:41
程序员如何讲自己做过的项目 浏览:7
程序员要看的书颈椎 浏览:946
php文章cms 浏览:553
CSS权威指南第三版PDF 浏览:496
android怎么搭建框架 浏览:184
正宗溯源码大燕条一克一般多少钱 浏览:917
电脑感染exe文件夹 浏览:916
wpsppt怎么转pdf格式 浏览:88
腾讯文档在线编辑怎么添加密码 浏览:880
本地不能访问服务器地址 浏览:865
访问服务器命令 浏览:835
华为云服务器分销商 浏览:954
Linux定位内存泄露 浏览:198
工程加密狗视频 浏览:720
不在内网怎么连接服务器 浏览:664
云服务器app安卓下载 浏览:966