MCS-51单片机编程题。 mcs 51 单片机汇编语言编程题

作者&投稿:比俊 (若有异议请与网页底部的电邮联系)
ORG 0000H
LJMP MAIN

ORG 0100H
MAIN: CLR C ;51单片机使用的是带进位的减法,使用前必须先清进位标志
MOV A,40H
SUBB A,41H
JC LLA ;如果41H中数大,不够减,则转LLA
JZ LLB ;如果40H中数和41H中数相等,转LLB
MOV GREAT,40H
MOV LESS, 41H
SJMP LEND
LLA: MOV GREAT,41H
MOV LESS, 40H
SJMP LEND
LLB: MOV GREAT,40H
MOV LESS, 40H
LEND: SJMP LEND

GREAT EQU 30H
LESS EQU 31H
ORG 0000H
LJMP MAIN:
ORG 0030H
MAIN:
MOV A,40H
CJNE A,41H,MAIN1
MOV GREAT,40H
MOV LESS,41H
SJMP MAIN3
MAIN1:
JC MAIN2
MOV GREAT,41H
MOV LESS,40H
SJMP MAIN3
MAIN2:
MOV GREAT,40H
MOV LESS,41H
MAIN3:
SJMP $

MOV A 40H;
SUB A,41H;
JC LOOP;
MOV GREAT 40H;
MOV LESS 41H;
JMP END;
LOOP:MOV GREAT 41H;
MOV LESS 40H;
END: JMP $;

MCS-51单片机的编程题:已知系统晶振频率为12MHZ,采用定时器T0的方式1,请编程实现1s的延时。~

中断服务函数就不用写了吧,就写个初始化函数:
void inition()
{
TOMD=0x01;//选择定时器0并选择工作方式1
TH0=(65536-50000)/256;
TL0=(65536-500000)%6;
EA=1;
ET0=1;
TR0=1;
}
这样初始化就没问题了,另外要实现1S延时,需要在中断函数里加个变量自增,因为我定义的是50ms中断一次,那么这个变量值自增到20后就代表1s时间到,清零这个变量之后方可写你的服务程序。
希望我的回答能帮助到你。

TEMP EQU 50H ;临时变量
SGM_H EQU 51H ;求和的高8位,以及平均值
SGM_L EQU 52H ;求和的低8位,以及平均值的余数


ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
LCALL MM ;排序子程序
LCALL AVG ;平均值子程序
SJMP $



MM:
MOV R0,#40H
LP_1:
MOV A,R0
MOV R1,A
MOV TEMP,@R0
LP_2:
INC R1
MOV A,@R1
CJNE A,TEMP,NEXT1
NEXT1:
JNC NEXT2
MOV @R0,A
MOV @R1,TEMP
MOV TEMP,@R0
NEXT2:
CJNE R1,#4FH,LP_2
INC R0
CJNE R0,#4FH,LP_1
RET



AVG:
MOV R0,#41H
MOV A,@R0
MOV SGM_H,#00H
LP_3:
CLR C
INC R0
ADD A,@R0
JNC NEXT3
INC SGM_H
NEXT3:
CJNE R0,#4EH,LP_3
MOV SGM_L,A


;以上部分是求和
SWAP A
ANL A,#0FH
MOV R1,A
MOV A,SGM_H
SWAP A
ADD A,R1
MOV B,#14D
DIV AB
SWAP A
MOV SGM_H,A
MOV A,B
SWAP A
MOV R1,A
MOV A,SGM_L
ANL A,#0FH
ADD A,R1
MOV B,#14D
DIV AB
ADD A,SGM_H
MOV SGM_H,A
MOV SGM_L,B
;以上部分是16位除以8位的除法
RET



解题思路是先排序,得到最大值与最小值,然后求平均值。
以上供参考。

已知MCS-51系列单片机的晶体振荡频率为6 MHz,请编程实现利用定时器T1定...
答:主程序:sbit PWM=P1^2;uchar a=0;TMOD=0X20;TH1=256-25;TL1=256-25;ET1=1;TR1=1;PWM=1;while(1);中断程序:void timer1() interrupt 3 { a++;if(a>=1)PWM=0;if(a==8){a=0; PWM=1;} }

单片机c编程问题
答:在C51编译的时候,如果出现了“error C241: 'main': auto segment too large” 的错误,主要原因是由于 51 "DATA" 存储容量不足。解决方法为:(1)把宣告"DATA"的变数改成 "XDATA"=>unsigned char XXXX 改成 unsigned char xdata XXXX (2)快速的方法 : 在Keil C 的 Target标签中,...

单片机中断程序怎么写?
答:编程代码如下:ORG 0000H MOV DPTR,#1000H ;给源数据块地址指针DPTR赋初值 MOV P2, #20H ;给目的数据块地址指针P2和R0赋初值 MOV RO,#00H LOOP: MOVX A, @DPTR .MOVX @RO, A .INC DPTR INC RO CJNE RO,#64H, LOOP SJMP

单片机试题
答:D MOVX @DPTR,A MCS—51使用中断方式时,保护现场的操作应该是( A )A 中断响应时完成 B 在主程序中完成 C 中断服务程序完成 D 自动完成

基于89C51单片机数控恒流源按键模块和显示C语言程序
答:这个是要和具体的硬件想结合的,不是说你说一下就完事了的。你这个好像是以前的电子竞赛的一个题目吧。 (8) 输出噪声纹波电流≤88mA(Ui =88V,Uo=81V,Io=8111mA);这个要求是要硬件实现的,软件用88是没有办法...

急需:求单片机80S51实训(带汇编程序) 题目要求:8乘8点阵显示 需原理图...
答:二、实验设备 STAR系列实验仪一套、PC机一台。三、实验内容 1、编写程序,用8255的PA口控制8X8点阵的行;8255的PC口控制8X8点阵的列;显示字符。2、按图连接线路;运行程序,观察实验结果,学会控制LED点阵显示字符。四、实验原理图 五、实验步骤 1、主机连线说明:B4区:CS(8255)、A0、A1——A3区...

单片机原理与应用技术(单片机原理与应用技术第二版课后答案)
答:单片机在硬件资源方面的利用率必须很高才行,所以汇编虽然原始却还是在大量使用。一样的道理,如果把巨型计算机上的操作系统和应用软件拿到家用PC上来运行,家用PC也是承受不了的。单片机原理与应用及c51程序设计第二版课后习题答案杨加国谢维成编著指导教师签字学生签字2009年3月15日题目来源指导教师推荐□v自选□其它□...

51单片机一个引脚输出一个方波,频率为1Hz到100zHz,第一次用这个应用,所...
答:include <reg52.h># define uchar unsigned char# define uint unsigned intuchar code DSY_CODE[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阳极的段码sbit CS_1 = P2^0;sbit CS_2 = P2^1;sbit S1 = P1^0;uchar freq = 0;void DelayMs(uint x);...

MCS51单片机A=17H,当A被加上88H后,OV为( )
答:51单片机中,溢出标志OV=CP⊕CS,应该表示为OV=C6'⊕C7'。即加减运算时,C6'是次高位D6I向最高位产生的进位或借位,C7'是最高位D7I向第九位产生的进位或借位,二者的异或结果即为OV。A=17H,当A被加上88H后,D6、D7都没产生进位,C6'、C7都是0,C6'⊕C7=0,所以OV=0。

51单片机,定时中断与键盘扫描的问题。
答:中断当中注意使用while语句,防止处在中断当中退不出来或不确定状态。--- 米德电子-Mide Technology研发中心 http://www.csmide.cn ---