汇编文档格式.docx
- 文档编号:255999
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:11
- 大小:187.40KB
汇编文档格式.docx
《汇编文档格式.docx》由会员分享,可在线阅读,更多相关《汇编文档格式.docx(11页珍藏版)》请在冰点文库上搜索。
ORG0000H
MOVp1,#0ffh
SE11:
MOVSP,#70h
MOV7EH,#00H
MOV7DH,#08H
MOV7CH,#00H
MOV7BH,#09H
MOV7AH,#10H
MOV79H,#10H
MOVDPTR,#0FF20H
MOVA,#03h
MOVX@DPTR,A
L991:
LCALLse
MOVA,#00H
MOVDPTR,#8000H
MOVX@DPTR,A;
启动A\D转换
MOVR7,#0FFH
L017:
DJNZR7,L017
MOVXA,@DPTR;
读取转换结果
MOVR0,#79H
lcallcom
lo:
LCALLPTDS
SJMPL991
PTDS:
MOVR1,A
ACALLPTDS1
MOVA,R1
SWAPA
PTDS1:
ANLA,#0FH
MOV@R0,A
INCR0
RET
se:
SETBRS1
MOVR5,#05H
SsE2:
MOV30H,#20H
MOV31H,#7EH
MOVR7,#06H
SSHH:
MOVR1,#21H
MOVA,30H
MOVX@R1,A
MOVR0,31H
MOVA,@R0
MOVDPTR,#DDFF
MOVCA,@A+DPTR
MOVR1,#22H
LCALLDLY
RRA
MOV30H,A
DEC31H
MOVA,#0FFH
DJNZR7,SSHH
DJNZR5,SSE2
CLRRS1
com:
pushaCC
cjnea,#50d,ne1
ret
ne1:
jcdan1
cjnea,#200d,ne2
ne2:
jclo
dan1:
movp1,#11101111b
popaCC
DDFF:
DB0C0H,0F9H,0A4H,0B0H
DB99H,92H,82H,0F8H,80H,90H
DB88H,83H,0C6H,0A1H
DB86H,8EH,0FFH,0CH,89H,0DEH
DLY:
MOV40H,#02H
D1:
MOV3FH,#0FAH
DJNZ3FH,$
DJNZ40H,D1
END
六、写出调试程序的方法
首先连接硬件设备,旋动电压旋扭模拟电压波动,当电压超出允许范围是红灯亮,并且切断电压输出,当旋动电压旋扭到允许范围内时,电压中断停止,红灯灭。
七、指出所设计问题的不足和改进方案
由于条件限制实验模拟并不能解决实际中遇到的情况。
八、自评分和收获体会
通过学习单片机的原理和一周的程序设计实习,使我们充分了解了的它的实用性和在工业中的优势地位。
所以我们一定要认真学好单片机课程,以便在今后的工作中可以充分的利用它优势。
此次程序设计我们的题目是电压报警的模拟,虽然题目并不是很难,但其非常具有代表性,是一个典型的上下限报警模型。
可以让我们充分了解实验版ADC转换。
总的来说,这次电压报警器的单片机模拟设计使我们收获颇大!
计算机在启动运行时都需要复位,使中央处理器CPU和系统中的其它部件都处于一个确定的初始状态,并从这个状态开始工作。
AT89S52单片机有一个复位引脚RST,它是史密特触发输入(对于CHMOS单片机,RST引脚的内部有一个拉低电阻),当振荡器起振后该引脚上出现2个机器周期(即24个时钟周期)以上的高电平,使器件复位,只要RST保持高电平,MCS-51保持复位状态。
此时ALE、PSEN、P0、P1、P2、P3口都输出高电平。
RST变为低电平后,退出复位,单片机从初始状态开始工作。
单片机采用的复位方式是按键复位方式。
当复位信号输入段RSSET出现一定时间的高电平时,只要高电平时间足够长,就可以使AT89S52有效的复位。
RST端在加电时应保持的高电平时间包括VCC的上升时间和振荡器起振的时间,Vss上升时间若为10ms,振荡器起振的时间和频率有关。
10MHZ时约为1ms,1MHZ时约为10ms,所以一般为了可靠的复位,RST在上电应保持20ms以上的高电平。
RC时间常数越大,上电RST端保持高电平的时间越长。
若复位电路失效,加电后CPU从一个随机的状态开始工作,系统就不能正常运转。
因此对于中央处理器CPU,在启动状态时复位电路必要。
时钟电路用于产生单片机工作所需的时钟信号。
一般时钟信号有两种方式,内部时钟信号和外部时钟信号。
内部时钟方式为片内震荡器,通过单片机的引脚XTAL1和XTAL2为片内震荡器的输入端和输出端,在XTAL1和XTAL2两端跨接晶体或陶瓷谐振器,这样就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟发生器。
在连接外部时钟方式时,一般采用采用外部震荡器,外部震荡脉冲信号通过XTAL1端接入后直接送至内部时钟发生器,因此输出端XTAL2应悬浮。
不过因为XTAL1的逻辑电平不是TTL的,因此需外接一个上拉电阻。
对于本设计的电压越限报警器,由于电路只需一块单片机芯片进行工作,并且由于在AT89S52单片机芯片的内部有一个高增益反向放大器,因此进行内部时钟方式因此本设计采用内部时钟方式。
#defineucharunsignedchar
#defineuintunsignedint
sbitGATE=P2^0;
sbitBP=P2^1;
uintt_count,int0_count;
/+定时器0中断服务子程序*/
voidtimer0()interrupt1USing1
(
TR0=0;
//停止计数
TH0=一5000/256;
//重设5ms计数
TL0=一5000%256:
t_count++;
if(it_count>
600)
//第一次外部中断0产生后3S
(if(int0_count==1)//还没有出现第二次外部中断0,则认为充电完毕
GATE=0;
//关闭充电电源
BP=0;
//打开蜂鸣器报警
)
e1se
//否则即是充电出错
(GATE=1;
BP=1;
ET0
=0;
//关闭TO中断
EX0
//关闭外部中断0
int0_count
t_count
else
TR0=1;
//TO开始计数
)/*外部中断0服务子程序+/
voidint0()interrupt0USing1
(if(int0_count==0)
(
TH0=一5000f256;
//5ms定时
TL0=一5000%256;
TRO=1:
//启动定时/计数器O计数
t_count=0;
//产生定时器0中断的计数器清零
intO—count++;
/*初始化*/
voidinit()
EA
=1;
//打开cpu中断
PTO=1
//T0中断设为高优先级
TMOD=0X01;
//模式1,TO为16位定时/计数器
ETO
//打开TO中断
ITO
//外部中断O设为边沿触发
EXO
=l;
//打开外部中断O
GATE
//光耦正常输出电压
Bp
//关闭蜂鸣器
Int0_count
=O
//产生外部中断O的计数器清零
voidmain()
/*调用初始化函数*/
init();
/*无限循环*/
while
(1);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编