单片机1秒钟定时汇编语言怎么编?
TIME1S EQU 30H
TIME50ms EQU 31H
ORG 0000H ;程序入口
AJMP main
ORG 000BH ;TO中断入口
AJMP INT_T0
ORG 100H
main: MOV TIME1S,#0
MOV TIME50ms,#0
MOV TMOD ,#02H ;写控制字,将T0设为方式2( 8位自动重装)
MOV TH0, #06H ;THO和TL0的计算为:2的16次方-(晶振*定时时间 /12)
MOV TL0, #06H ;TC =0FFH-06H= 6H =6===》延时时间为(2^8-TC)*12/16 =250us 定时时间为250us
SETB TR0 ;启动T0
SETB ET0 ;允许T0中断
SETB EA ;开放CPU中断
LOOP: NOP
AJMP LOOP
INT_T0:PUSH PSW
PUSH ACC
INC TIME50ms
MOV A,TIME50mS
CJNE A,#200,INT_01 ;200次为TIME1S加1,此处时间为200*250us=50ms
MOV TIME50ms,#0
INC TIME1s
MOV A,TIME1S
CJNE A,#20,INT_01 ;此处再做20次即为1S
2020
MOV TIME1S,#0
;;;;;;;;;;;此处你可以编你要的程序,我在这里将P3。1脚取反,每秒变一次电平
CPL P3.1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
INT_01:POP ACC
POP PSW
RETI
END
注:以上设计为12M晶振,仿真通过。此方法并未达到精确的定时,因为8位定时器,要做好多4000次才完成1秒的定时。它的时间会延长了一点点,每一秒种有0。01秒的误差左右,要看你用的是什么单片机。若要精确定时建议用16位定时方式,这样误差会更小一点。
**********我爱梅梅头
如果是51单片机的话其实很简单的,这里假设晶振频率是12M(一般都是的),你可以选用定时器0,工作在工作状态2,因为这个状态下装入初始值几乎不需要时间,所以定时精确,也就是8位预置数状态,将初始值设为6,这样每次定时就是250微秒,在中断程序中定义一个静态变量,每次中断加一,这样当这个变量值为4000时就刚好是1S钟。
关键程序是:
void main()
{
TMOD=OX02;
EA=1;
ET0=1;
TH0=0X06;
TL0=0X06;
while(1);
}
void timer0() interrupt 1
{
static unsigned int times=0;
times++;
if(times==4000)
{
times=0;
//自己的程序
}}
第一种方法:用延时的方法实现
DELAY: MOV R3,#10;延时子程序,延时1秒
D1: MOV R4,#200
D2: MOV R5,#250
D3: DJNZ R5,D3
DJNZ R4,D2
DJNZ R3,D1
RET
END
第二种方法:用定时器的方法实现
————
MOV R1,#20
————
DLY: MOV TMOD,#00000001B;延时子程序,设定定时器的工作方式
D1: SETB TL0,#176(65536-50000); 15536/256 (余数)
SETB TH0,#60;设置初出溢出值50ms,定时2S (商)
SETB TR0 ;启动定时器
JNB TF0,$;是否溢出,没有溢出等待,溢出走一条指令
CLR TF0;清零溢出
DJNZ R1,D1;走20次,刚好1秒
RET
END
ORG 00H
START:
MOV TMOD,#01H
MOV R5,#14H
MOV TL0,#0B0H
MOV TH0,#03CH
SETB TR0
DJNZ R7,NEXT
CLR TR0
...
;这里写要处理的程序
...
JMP START
END
NEXT:
MOV TL0,#0B0H
MOV TH0,#03CH
RET
此程序在晶振频率为12MHz下定时一秒
ORG
00H
START:
MOV
TMOD,#01H
MOV
R5,#14H
MOV
TL0,#0B0H
MOV
TH0,#03CH
SETB
TR0
DJNZ
R7,NEXT
CLR
TR0
...
;里写要处理程序
...
JMP
START
END
NEXT:
MOV
TL0,#0B0H
MOV
TH0,#03CH
RET
此程序晶振频率12MHz下定时秒
单片机1秒钟定时汇编语言怎么编?
第一种方法:用延时的方法实现 DELAY: MOV R3,#10;延时子程序,延时1秒 D1: MOV R4,#200 D2: MOV R5,#250 D3: DJNZ R5,D3 DJNZ R4,D2 DJNZ R3,D1 RET END 第二种方法:用定时器的方法实现 ———MOV R1,#20 ———DLY: MOV TMOD,#00000001B;延时子程序,设定...
程序控制cpu占用率介绍
通过空循环,来让cpu保持繁忙的工作状态,通过sleep使cpu空闲。机器指令最接近的是汇编语言。而空的for 循环,换成汇编语言是大概5句,现在的CPU可以在一个时钟周期执行两个机器指令,相当于执行两个汇编语句。现在假设电脑的主频是3.2G,则每秒可以执行 3200000000*2\/5=1280000000条空循环语句。
汇编语言
45.设有一长度为20H的字符串,存放在8031单片机片内RAM以30H为首地址的连续单元中,试编制将其中数字与字母分开并将它们分别送到以50H和70H为首地址的连续单元中的程序。46.设在片内RAM的20H单元中存放一数码,其值范围为0~200,要求用查表法求此数的平方值并将结果存入片外RAM的20H,21H单元中,试编制相应的...
单片机编程语言一般有哪几种
例如,懂得汇编语言指令就可以便用在片内ram作变量的优势,因为片外变量需要几条指令才能设署累加器和数据指针进行存取。同样的,当要求便用浮点数和启用函数时也只有具备汇编编程经验才能避免生成庞大的、效率低的程序,对于这方面的编程,没有汇编语言是做不到的。2.单片机的C语言 单片机的C语言是一...
什么是汇编语言
1. 汇编语言的基本定义 汇编语言是一种用特定的编码形式来表示计算机指令的语言。它通过使用助记符来表示机器语言中的操作码,并通过特定的格式和语法规则来描述计算机的操作流程。由于它与计算机的底层结构直接对应,因此可以直接对计算机硬件进行控制,从而能够更快速地执行特定的操作。2. 汇编语言的特性 ...
单片微机发展的几个主要阶段
第一阶段(1971~1973年),以4位或低档8位微处理器为主,如Intel的4004和8008,以及它们组成的MCS-4和MCS-8微型计算机。这些设备采用PMOS工艺,指令执行速度较慢,约10~20微秒,主要用于基础计算,软件主要依赖于机器语言或简单的汇编语言,价格相对较低。第二阶段(1974~1978年)是中档8位微处理器的...
求PIC 8位单片机 汇编指令比较全的,详细点的
一、PIC汇编语言指令格式 PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下: 标号 操作码助记符 操作数1,操作数2;注释 指令格式说明如下:指令的4个部分之间由空格作隔离符,空格可以是1格或多格,以保证交叉汇编时,PC机能识别指令。 1 标号 与MCS-51系...
汇编是什么
1、汇编语言的基本概念 汇编语言是一键笑坦种与特定计算机硬件体系结构密切相关的编程语言。它使用简单的助记符(mnemonics)来表示不同的指令和操作符,例如加法、减法、条件跳转等。这些助记符对应的具体操作由计算机硬件所支持。2、汇编与机器码的关系 汇编语言是对机器码的可读形式,每条汇编指令都会被...
有没有什么汇编语言好一点的入门书
王爽的《汇编语言》,清华大学出版社
如何在短时间内学会MCS-51单片机
你现在有数模电基础了,还会C语言,这样学起单片机来应该很快就能上手。首先,你得买一本51单片机的基础教程,这样的书很多。特别是北航出版社的书籍,一片一片的。书不要多,买一本就可以了。但必须要仔细的看几遍,了解关于51单片机的内部结构啊,I\/O口控制,定时器\/计算数怎么设置啊,中断功能...