单片机。用汇编语言编程。 设计一软件延时1s的子程序。设晶振频率为12MHz。

作者&投稿:经畏 (若有异议请与网页底部的电邮联系)
单片机。用汇编语言编程。 设计一软件延时3.5S的子程序。设晶振频率为12MHz~

DELAY:
MOV R2,#35
DELAY1:
MOV R3,#198
NOP
NOP
DELAY2:
MOV R4,#250
DJNZ R4,$
DJNZ R3,DELAY2
DJNZ R2,DELAY1
RET
误差为242us。

如果单纯延时,可以用实验的办法,在keilc51里面仿真
void Delay1S(char n)
{
char i,j;
n=n*4;
for(;n;n--)
{
for(i=6;i;i++)
{
for(j=7;j;j++) // 一个循环约为1mS
;
}
}
}

看编译后的汇编:
C:0x0805 7D01 MOV R5,#0x06;j=1,1时钟
C:0x0807 0D INC R5;j++,1时钟
C:0x0808 ED MOV A,R5;A=R5,1时钟
C:0x0809 70FC JNZ C:0807;A=0?,2时钟
循环共249次,一个循环共需4个时钟周期,加上第一个赋值语句1周期。
共997uS,加上外层循环,一次约1mS,
如果要精确的延时建议采用中断:
#include "reg51.h"
//timer init
void initTimer(void)
{
TMOD=0x2;
TH0=0x6;
TL0=0x6;
}
int T250uS;
char T_mark;
//timer0/counter0 interrupt
void timer0(void) interrupt 1
{
//add your code here.
T250uS++;
T_mark=0;
}
void Delay1S(char n)
{
for(;n;n--)
for(T250uS=0;T250uS<4000;)
{
T_mark=1;
while(T_mark);
}
}
//the main fun
void main(void)
{
initTimer();
TR0=1;
ET0=1;
EA=1;
while(1)
{
Delay1S(1);
}
}

delay1000ms:(HT46R65的单片机)(注意不要开启计时中断允许位)
mov a,10000111b (设置频率和记数方式)(上升记数还是下降记数)
mov tmr0c,a (tmr0c 计数器的控制寄存器)
mov a,low(65536-31250) (设置的频率就是1S上升31250)因此是DELAY1S
mov TMR0L,a (计数器的赋予初始值的低位寄存器)
mov a,high(65536-31250)
mov TMR0h,a(计数器的赋予初始值的高位寄存器)
set tmr0c.4 (打开记数)
snz intc0.6 (是否有中断请求标志)(有就跳过)
jmp $-1 (退回一步)
clr tmr0c.4 (关闭记数)
clr intc0.6 (清除中断标志)
ret

不同单片机 指令周期有所不同 下面DJNZ指令3个晶振周期
DELAY1S:
MOV R7,#000H
MOV R6,#00AH
MOV R5,#03EH
LOOP: DJNZ R7,LOOP
NOP
DJNZ R6,LOOP
NOP
DJNZ R5,LOOP
NOP
RET


用汇编语言编制一个 将内存BUFA单元存放的8个数字传送到BUFB单元中...
使用MOVS指令,复制内存单元。DS:SI指向源,ES:DI指向目标 例:DATA SEGMENT BUFA db 'abcdefgh',0DH,0AH,'$'BUFB db 8 dup(?),0DH,0AH,'$'DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATA START:MOV AX,DATA MOV DS,AX MOV ES,AX MOV CX,8 MOV SI,OFFSE...

用汇编语言实现从键盘读一行信息,并存入用户定义的缓冲区buffer。如从...
更多关于汇编语言的知识 > 正在求助 换一换 回答问题,赢新手礼包 苦等10分钟: 为什么要用那种眼神看着我 回答 苦等1小时: 保温袋里的手机会被金属探测器扫到么? 20 回答 苦等1小时: 为什么vue相机,拍摄的照片突然存不到照片里了?而... 20 回答 苦等4小时: 怎么判断mysql的更新语句是否执行成功 ...

通用步进电机控制器设计(精通单片机汇编语言的朋友进)
�② 用汇编语言:现在有些单片STD工业控制机或者开发系统,可直接使用汇编语言,借助CRT进行汇编语言调试。 �③ 手工汇编:这种方法是最原始,但又是一种最简捷的调试方法,且不必增加调试设备。这种方法的实质就是对照MCS—51指令编码表,将源程序指令逐条地译成机器码,然后输入到RAM重新进行调试。在进行手工汇编时...

单片微机简介
此外,8051还具备专用的I\/O接口和功能,如直接驱动显示器的并行口,模拟\/数字转换接口,支持DMA(存储器直接存取)以提高数据传输效率,以及字符发生器和波形发生器等,为复杂应用提供了支持。单片机不仅作为一种硬件设备,也被用作学习工具,帮助学习者理解微处理器原理和应用。通过学习汇编语言编程,按照...

单片微型计算机原理与设计目录
在深入理解单片机硬件系统后,第2章详细剖析了单片机的组成结构,如MCS-51单片机的工作原理。通过这一章的学习,读者可以掌握单片机的核心功能。第3章则是关于单片机的指令系统,包括程序设计的概述、寻址方式、指令集以及伪指令的使用,最后介绍汇编语言程序设计,帮助读者掌握编程基础。第4章转向C语言在...

自动化,人工智能要用到哪些计算机语言
自动化用很多计算机语言都可以,简单于人工智能,但是人工智能就有局限性了,因为要涉及到更高的控制精度和更小更精准的编程以及硬件要求就要用“汇编语言”了,汇编语言高于C语言之类的三级高等语言,汇编语言属于计算机第二级语言,仅次于二进制代码。美国科幻大片里的或说话的机器人都没见过用C语言的。汇...

游戏用什么语言编写的?
一般的大型游戏开发不是单一用某一种软件语言的问题。一个大型游戏的开发需要非常大的团队用各种各样的语言和工具来完成。总结一下主要有C\/C++,汇编语言,着色器语言,脚本语言,高效的开发语言C#或Java。首先一般的游戏开发架构(Windows平台)从底到顶一般是Direct X™——游戏引擎——游戏。大型...

单片微型机原理目录
51系列单片机系统结构详析:2.1 总体结构: 51系列的结构特点及89C52的详细设计 2.2 存储器组织和时钟管理第3章:指令系统与程序设计策略:3.1 指令格式和伪指令3.2 寻址方式与指令操作3.3 数据与逻辑运算指令3.4 控制转移与程序设计方法后续章节包括功能模块应用、接口技术、汇编语言编程、C51...

C语言片指的是什么?
C语言是国际上广泛流行的,很有发展前途的计算机高级语言.它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件. 早期的操作系统等系统软件主要是用汇编语言编写的(包括 UNIX操作系统在内).由于汇编语言依赖于计算机硬件,程序的可读性和可移植性都比较差.为了提高可读性和可移植性,最好改用...

单片微机系统实用教程内容简介
书中详细涵盖了10个章节,涉及单片微机内部构造与资源、工作原理、存储器结构、汇编语言程序设计、接口技术及实际应用案例等关键部分。每章结尾还配有小结和适量的习题,便于巩固学习成果。本书不仅适合机电工程、自动化、仪表测控等专业的大学生作为教材使用,由于其实用性和针对性,也适合作为高职高专单片...

威宁彝族回族苗族自治县15359481271: 单片机.用汇编语言编程. 设计一软件延时3.5S的子程序.设晶振频率为12MHz -
笪叔牛黄: DELAY:MOV R2,#35 DELAY1:MOV R3,#198NOPNOP DELAY2:MOV R4,#250DJNZ R4,$DJNZ R3,DELAY2DJNZ R2,DELAY1RET 误差为242us.

威宁彝族回族苗族自治县15359481271: 单片机.用汇编语言编程. 设计一软件延时1s的子程序.设晶振频率为12MHz. -
笪叔牛黄: delay1000ms:(HT46R65的单片机)(注意不要开启中断允许位)mov a,10000111b (设置频率和记数方式)(上升记数还是下降记数)mov tmr0c,a (tmr0c 计数器的控制寄存器)mov a,low(65536-31250)mov TMR0L,a (计数器的赋予初始值的...

威宁彝族回族苗族自治县15359481271: 单片机(汇编语言)需要的软件? -
笪叔牛黄: 51单片机是Keil 软件 pic单片机是MPLAB软件 汇编要将编辑文件要保存为.asm为后缀的文件(c语言则是.c为后缀) avr单片机是avr studio 或iccavr软件 汇编要将编辑文件要保存为.s为后缀的文件(c语言则是.c为后缀)51单片机可以很多下载软...

威宁彝族回族苗族自治县15359481271: 用 80C51 单片机汇编语言程序设计 -
笪叔牛黄: 1.MOV A,45H ANL A,#0FH ORL A,#0FH MOV 45H,A2.MOV DPTR,#2000H MOVX A,@DPTR MOV 20H,A

威宁彝族回族苗族自治县15359481271: 单片机.分别使用c语言和汇编语言编写一个程序 -
笪叔牛黄: #include<reg52.h> unsigned char aa _at_ 0x30; void main() { IE = 0x81; IT0 = 1; aa = 0; while(1); } X0_INT() interrupt 0 { aa++; aa %= 100; }//==================== ORG 0000H LJMP START INC 30H MOV A, #100 CJNE A, 30H, EXIT MOV 30H...

威宁彝族回族苗族自治县15359481271: 使用汇编语言编写单片机程序 -
笪叔牛黄: ^_^,这个可以用两个红外对管来实现,进去的时候1,2依次得到低电平,寄存器加1;有人出来的时候2,1依次得到低电平,寄存器减1 当寄存器等于0的时候,灯灭,不等于0的时候灯亮^_^ 程序很简单就是怕学生会故意捣鬼,要是有一个人背着另一个走出去,灯就不会灭了^_^

威宁彝族回族苗族自治县15359481271: 用keil软件如何将汇编与C语言结合起来一起编写单片机的程序 -
笪叔牛黄: 在混合编程中,最常用也是最实用的方法是在C语言中加入部分汇编语言的代码,分为两种方法. 方法1)在Keil C51的函数中直接插入汇编语句 方法2)按照Keil C51接口规则,编写汇编模块方法1是利用编译控制命令#pragma asm(用来标识...

威宁彝族回族苗族自治县15359481271: 用汇编语言编写一个51单片机的程序 -
笪叔牛黄: 首先搞清LED管是高电平导通还是低电平导通. 如果是低电平导通,P1赋0x00时,发光管全亮,0xff时,全灭. 具体程序: #define uint unsigned int #define uchar unsigned char void delay(uint time_out) {uint i,j;for(i=0;i<time_out;i++){for(j=0;...

威宁彝族回族苗族自治县15359481271: 单片机用什么语言编写程序? -
笪叔牛黄: 单片机一般用C语言或者汇编语言来编写程序.建议先学C语言,汇编语言要算地址,汇编语言比较难,所以建议先学C语言.汇编语言要算地址,大多数情况下,单片机运行的程序,都是C语言编写的.不过并不是一般意义上的C语言,而是变种后的C51语言.单片机是典型的嵌入式微控制器(Microcontroller Unit),由运算器,控制器,存储器,输入输出设备等构成,相当于一个微型的计算机.与应用在个人电脑中的通用型微处理器相比,它更强调自供应(不用外接硬件)和节约成本.

威宁彝族回族苗族自治县15359481271: 编写单片机程序要用什么编程软件?用C语言编写单片机的程序,用哪种语言编程软件好? -
笪叔牛黄: 单片机编程的语言既可以用C,也可以用汇编.用汇编的优势主要是程序可以被编程者优化,而不是由编译器优化,这样就可以绝对可控,你想了解更多行业资讯,可以多关注下微信公众号:嵌入式资讯精选

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网