单片机及其接口技术实验报告.doc

上传人:仙人指路1688 文档编号:2392607 上传时间:2023-02-17 格式:DOC 页数:32 大小:2.26MB
返回 下载 相关 举报
单片机及其接口技术实验报告.doc_第1页
第1页 / 共32页
单片机及其接口技术实验报告.doc_第2页
第2页 / 共32页
单片机及其接口技术实验报告.doc_第3页
第3页 / 共32页
单片机及其接口技术实验报告.doc_第4页
第4页 / 共32页
单片机及其接口技术实验报告.doc_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《单片机及其接口技术实验报告.doc》由会员分享,可在线阅读,更多相关《单片机及其接口技术实验报告.doc(32页珍藏版)》请在三一办公上搜索。

1、单片机及接口技术实验报告实验一 数据传送程序一、 实验目的1、掌握汇编语言设计和调试方法。2、掌握DVCC实验系统的操作步骤。二、 实验内容1、编程实现,把7000H70FFH单元的内容清零。 2、编程实现,把源地址为6000H开始的单元内容,传送到目的地址7000H开始的单元中,传送个数为0FFFH个。三、DVCC实验系统操作说明1、 接通DVCC实验系统电源,在DVCC实验箱上应显示闪动的“P”,否则按Reset键。2、 运行DVCC软件。(程序 DVCC598H实验系统 DVCC实验系统)3、 单击工具栏上“新建”或“打开”按钮,编写源程序。单击“编译”按钮,使其形成可执行文件。4、 单

2、击工具栏上“联接”按钮,同时按下DVCC实验箱上PCDBG键(键盘上最右边第2个),实现PC机和实验箱的联接。联机成功,屏幕上出现:.反汇编窗口、寄存器标示位窗口。5、 在成功联机后,单击工具栏上“调试”按钮,把最终目标文件装载到实验系统RAM区;或者通过单击菜单栏中的“动态调试”,选择“传送(.EXE)文件”来实现。6、 单击工具栏上“运行”或“单步”按钮,运行实验程序。7、 单击工具栏上“窗口”,选择“显示内部数据窗口”或“显示外部数据窗口”可显示数据窗口。鼠标右击数据窗口的数据,可设置数据块新地址;鼠标左键单击数据,可修改数据数值。8、 运行完毕,先按实验箱上的复位按钮Reset键,再按

3、PCDBG键,并且点击屏幕上OK,即可退出运行状态。四、实验程序代码 1、把7000H70FFH单元的内容清零。 程序代码: ORG 0000HAJMPSTARTORG70HSTART:MOVP2, #70H;送地址高8位到P2端口MOVR0, #00H;R0=00H,表地址低8位CLR A;将累加器A清0LOOP: MOVX R0, A;将A送入以R0内容为地址的外部RAM.INCR0;R0+1-R0CJNER0,#00H,LOOP;比较条件转移指令,若R0不等于0,则跳转到LOOPAJMP $;暂停END2、 编程实现,将源地址为6000H开始的单元,传送到目的地址7000H开始的单元,传

4、送个数为0FFFH个。程序代码: ORG 0000H AJMP STARTORG 50HSTART: MOV DPTR, #6000HMOVP2, #70HMOVR0,#00HLOOP: MOVX A, DPTR MOVX R0, AINC DPTRINCR0CJNE R0,#00H,LOOP;比较条件转移,若R0不等于0,则程序循环,执行loop. INC P2MOVR1,P2CJNE R1,#80H,LOOP; 若R1不等与80h,则程序循环执行loop. AJMP $ END五、实验结果1、把7000H70FFH单元的内容清零。2、编程实现,将源地址为6000H开始的单元,传送到目的地址

5、7000H开始的单元,传送个数为0FFFH个。上图是左下角的窗口显示的是存储器源地址为6000H开始的单元里的内容。上图是程序运行后,存储器源地址为7000H开始的单元里的内容。经比较可以看出传送成功。六、问题与讨论 在做实验内容1时编译现在第10行出错,后来将第9和第10行后的注释都删除就编译通过了。实验二 并行口实验一、实验目的1、掌握P3口、P1口简单使用。2、学习延时程序的编写和使用。二、实验内容1、编写程序用P1.0输出1kHz和500Hz的音频信号,以驱动扬声器作为报警信号。要求1kHz信号响100ms,500Hz信号响200ms,交替进行。P1.7接一开关,进行控制。当开关合上,

6、报警信号响;当开关断开,报警信号停止。(教材单片机原理、接口及应用嵌入式系统技术基础 P75 例4-3)2、P3口做输入口,P1口做输出口。P3.3外接一脉冲,P1.0P1.7接的8个发光二极管L1L8。编写程序,使P3.3每输入一个脉冲,P1口按16进制加一方式逐次点亮发光二极管。三、实验接线图(实验内容二接线图)四、实验步骤1、编写程序用P1.0输出1kHz和500Hz的音频信号,以驱动扬声器作为报警信号。要求1kHz信号响100ms,500Hz信号响200ms,交替进行。P1.7接一开关,进行控制。当开关合上,报警信号响;当开关断开,报警信号停止。由于实验箱单片机P1.0是坏的,编程P1

7、.1为输出,其他不变。程序代码:ORG 00hSTART: SETB P1.7 ;P1. 7置1 JB P1.7, $;若P1.7为高电平,则循环检测,否则向下执行 MOV R1,#200;LOOP: ACALL D500 ; CPL P1.1 ; 产生1KHz的频率,P1.1取反输出 DJNZ R1,LOOP; R1减1,不为0时转移到LOOP,响100ms MOV R2,#200LOOP1: ACALL D500 ; ACALL D500 ; CPL P1.1 ; 产生500Hz的频率,P1.1取反输出 DJNZ R2,LOOP1; R2减1,不为0时转移到LOOP,响200ms SJMP

8、 START ; 跳转至STARTD500: MOV R6,#125 ; 延迟500us DJNZ R6,$ RET END2、P3口做输入口,P1口做输出口。P3.3外接一脉冲,P1.0P1.7接的8个发光二极管L1L8。编写程序,使P3.3每输入一个脉冲,P1口按16进制加一方式逐次点亮发光二极管。实验2接了4个口,从P1.1到P1.4,两次脉冲,灯变化程序代码:ORG 00H CLRA SETBP3.3 ;将P3.3置1BEG:JBP3.3, $ ACALL D500; JNB P3.3,$ ACALLD500 INC A MOV P1,A ; P1口输出 SJMP BEGD500: M

9、OV R7,#125;延时500us(6Mhz) DJNZ R7,$ RET END五问题与讨论1、做实验内容1时,刚开始用P1.0口输出,铃总是不响,接示波器也不输出波形。经测试铃是好的,怀疑程序有问题,就将程序改成一直只输出1KHz的频率,还是不出波形。最后换成P1.1口输出,调试程序运行铃就响了。2、实验内容2要求P1口输出接8个LED管,为节省时间,接4个输出观察实验结果就行了。我们实验箱接的是P1.1P1.4,实验结果有所不同,P3.3每输入两个脉冲,P1口按4进制加一方式逐次点亮发光二极管。实验三 中断实验一、实验目的1)掌握中断程序的编程方法。2)进一步掌握P1、P3口的双功能使

10、用方法。二、实验内容正常情况下,仅绿灯亮。有故障发生时,绿灯灭,同时红灯闪烁;故障排除后,拨上总开关,恢复正常,绿灯亮,红灯灭。可由P1.0 控制绿灯的亮灭;P3.3 接外部中断源,模拟故障发生;P1.1 控制红灯的亮灭;P1.2 读取总开头的状态。编写程序实现以上功能。(P3.3 复用为外部中断1输入,即为INT1。其中断向量地址为0013H,使用下降沿触发中断。)三、实验程序框图主程序: 中断服务程序:四、实验步骤1、由P1.1 控制绿灯的亮灭;P3.3 接外部中断源,模拟故障发生;P1.2 控制红灯的亮灭;P1.3读取总开头的状态。P3.3 复用为外部中断1输入,即为INT1。其中断向量

11、地址为0013H,使用下降沿触发中断。程序代码: ORG0000hAJMPMAIN;主程序ORG0013H;中断矢量表p211AJMPIRPRO ;中断服务程序入口 ORG 0050H;主程序MAIN: CLR P1.2;红灯灭 SETB P1.1;绿灯亮 SETB IT1;设置INT1负边缘触发p206(定时器控制寄存器TCON) SETB EX1;外部中断1有效p208(中断容许控制器IE)SETB EA;开中断p208(中断容许控制器IE)LOOP1: JB P1.1, LOOP1LOOP2: JNB P1.3,LOOP2SETB P1.1 SJMP LOOP1AL1: AJMP AL1

12、;中断服务程序IRPRO: PUSH PSW PUSH ACC CLR P1.1; 灭绿灯LOOP3: SETB P1.2;亮红灯 ACALL D500 CPL P1.2 ACALL D500 JNB P1.3,LOOP3 ;这里用P1.2进行监视,若开关没有闭合,则红灯一直闪烁。 POP ACC POP PSW RETID500: MOV R6,#255 ;延时子程序DELAY: MOV R7,#0FFH DJNZ R7,$ DJNZ R6,DELAY RET END实验接线:P1.1 接绿灯; P1.2接红灯; P1.3 开关K1; P3.3 接点触开关SP2、将实验内容1中的外部中断源换

13、成INT0,其中断向量地址为0003H,使用下降沿触发中断。程序代码:ORG0000hAJMPMAIN;主程序ORG0003H;中断矢量表p211AJMPIRPRO ;中断服务程序入口 ORG 0050H;主程序MAIN: CLR P1.2;红灯灭 SETB P1.1;绿灯亮 SETB IT0;设置INT0负边缘触发p206(定时器控制寄存器TCON) SETB EX0;外部中断0有效p208(中断容许控制器IE) SETB EA;开中断p208(中断容许控制器IE) LOOP1: JB P1.1, LOOP1 LOOP2: JNB P1.3,LOOP2 SETB P1.1 SJMP LOOP

14、1 AL1: AJMP AL1;中断服务程序 IRPRO: PUSH PSW PUSH ACC CLR P1.1; 灭绿灯LOOP3: SETB P1.2;亮红灯 ACALL D500 CPL P1.2 ACALL D500 JNB P1.3,LOOP3 ;这里用P1.3进行监视,若开关没有闭合,则红灯一直闪烁。 POP ACC POP PSW RETI ; 中断返回D500: MOV R6,#255 ;延时子程序DELAY: MOV R7,#0FFH DJNZ R7,$ DJNZ R6,DELAY RET END实验接线:P1.1 接绿灯; P1.2接红灯; P1.3 开关K1; P3.2

15、接点触开关SP3、在实验内容1的实现功能中加上有故障发生时,绿灯灭,红灯闪烁同时报警;程序代码:ORG0000hAJMPMAIN;主程序ORG0013H;中断矢量表p211AJMPIRPRO ;中断服务程序入口 ORG 0050H;主程序MAIN: CLR P1.2;红灯灭 SETB P1.1;绿灯亮 SETB IT1;设置INT1负边缘触发p206(定时器控制寄存器TCON) SETB EX1;外部中断1有效p208(中断容许控制器IE)SETB EA;开中断p208(中断容许控制器IE)LOOP1: JB P1.1, LOOP1LOOP2: JNB P1.3,LOOP2 SETB P1.1

16、 SJMP LOOP1AL1: AJMP AL1;中断服务程序IRPRO: PUSH PSW PUSH ACC CLR P1.1; 灭绿灯LOOP3: SETB P1.2;亮红灯 ACALL D500 CPL P1.2 MOV R1,#200; LOOP: ACALL D500U ; CPL P1.4 ;P1.4取反输出 DJNZ R1,LOOP ;R1减1,不为0时转移到LOOP JNB P1.3,LOOP3 ;这里用P1.2进行监视,若开关没有闭合,则红灯一直闪烁。 POP ACC POP PSW RETID500: MOV R6,#255 ;延时子程序DELAY: MOV R7,#0FF

17、H DJNZ R7,$ DJNZ R6,DELAY RETD500U: MOV R5,#125 ;延迟500us DJNZ R5,$ RET END实验接线:P1.1 接绿灯; P1.2接红灯;P1.3 开关K1;P1.4接响铃;P3.3 接点触开关SP五、问题与讨论1、实验内容1要注意P3.3 复用为外部中断1输入,即为INT1。其中断向量地址为0013H,使用下降沿触发中断将IT1置1,开总中断将EA置1,开外部中断1将EX1置1.2、实验内容2要注意P3.2 复用为外部中断0输入,即为INT0。其中断向量地址为0003H,使用下降沿触发中断将IT0置1,开总中断将EA置1,开外部中断1将

18、EX0置1.3、实验内容3要加上一个输出接响铃,加上的响铃代码必须加在中断服务程序中红灯闪烁的那一段。响铃的声音要大一点,输出频率就要变大,最简单的方法就是加上一个延时子程序,响铃时调用。因为原有的延时子程序是使红灯闪烁,频率很低。实验四 定时/计数实验一、实验目的1、 熟悉8031定时/计数功能。2、 掌握定时/计数初始化编程方法。二、实验内容1、 选择T1工作于模式0定时,在P1.0脚上输出周期为4ms的方波,单片机采用6MHZ晶振。分析:输出周期为4ms的方波,即高低电平的持续时间均为2ms,那么只要使P1.0脚上的电平每隔2ms取反一次,就可得到周期为4ms的方波。 将T1设为定时方式

19、0:GATE=0,C/T=0,M1M0=00;T0不用,可为任意,只要不使其进入方式3(此时,定时器1对外停止计数),一般取0即可。计数初值的计算:单片机系统默认的定时/计数器的工作时钟是晶振经12分频的,即T=12/(6*106),所以计数初值为 X=(213-2ms/T)=213-(2*10-3*6*106)/12=8192-1000=7192=1110000011000B因为是13位计数器,所以X的高8位装入TH1,X的低5位装入TL1的低5位,即TH1=0E0H,TL1=18H。 思考:T1计数结束采用中断工作方式 ,程序应如何编写?2、在P1.7端接一个发光二极管LED,要求利用定时

20、器控制,使LED亮1秒、灭1秒,周而复始,设=6MHZ。三、实验内容一参考程序框图:四、实验步骤1、选择T1工作于模式0定时,在P1.0脚上输出周期为4ms的方波,单片机采用6MHZ晶振。(查询方式)程序代码: ORG 0000HMOVTMOD,#00H;设定Timer1工作在模式0下LOOP2:MOVTH1,#0E0H;向Timer1中载入计数的初始值MOVTL1,#18HSETBTR1;启动AGAIN:JBCTF1,LOOP1;定时时间到否?没有则继续查询,到了则输出,并清TF1位等。SJMPAGAINLOOP1:CPL P1.0SJMPLOOP2END 思考:T1计数结束采用中断工作方式

21、 程序代码: ORG 0000H;中断方式:选择T1工作,方式0 AJMPMAIN ORG001BH AJMP TIMER_1 ORG0030HMAIN: SETBP1.0; P1.0输出为高电平 MOVTMOD,#00H;设置定时器1,工作在定时方式0 MOVTH1,# 0E0H; 输入时间初始常数MOVTL1,#18H SETBTR1;启动Timer1 SETBEA; 开中断 SETBET1;容许Timer1中断WAIT:SJMPWAITTIMER_1: CPLP1.0 MOVTH1,#0FCHMOVTL1,#18HRETI END2、在P1.7端接一个发光二极管LED,要求利用定时器控制

22、,使LED亮1秒、灭1秒,周而复始,设=6MHZ。程序代码: ORG00H ;查询方式 AJMPMAINMAIN:MOV TMOD,#10H; 选择T1工作,方式1 SETBP1.0 SETB TR1;启动定时器LOOP1:MOVR2,#20;设置调用延时的次数为20次LOOP2:CALL DELAY;调用50ms的延时 DJNZR2,LOOP2;若调用延时次数不到,则继续调用延时程序 CPLP1.0;取反,输出 AJMPLOOP1DELAY:MOVTH1,#9EH;50ms的延时子程序 MOVTL1,#58H LOOP:JBCTF1,NEXT SJMPLOOPNEXT:RET END用中断方

23、式实现:ORG 0000H;中断方式:选择T1工作,方式1 ,TEST4_4 AJMPMAIN ORG001BH AJMP TIMER_1 ORG0030HMAIN:SETBP1.0 ;主程序 MOVTMOD,#10H MOVTH1,#09eH MOVTL1,#58H SETBTR1 SETBEA SETBET1 MOV R2,#20; 设置循环次数WAIT:SJMPWAITTIMER_1: DJNZR2, LOOP;中断服务程序MOV R2,#20CPLP1.0LOOP: MOV TH1,#9EHMOV TL1,#58H RETIEND实验五 串行口应用实验一、实验目的 掌握串行口工作方式的

24、程序设计,掌握单片机通信程序编制方法。 二、实验内容1、重复发送同一个数据,观察TXD端输出的波形。将8031串口设为工作方式1,即10位异步收发,发送时钟由计数器控制;计数器T1设为定时工作,工作方式2,即自动重装8位计数器;波特率取1200 bps,不加倍;单片机采用6MHZ晶振。计数初值的计算:TH1=256-(1+0)*fosc/(12*32*BPS) P3.1复用为串行发送端TXD,将其接至示波器,观察输出波形。注意观察8位数据位前后的起始位和停止位。2、自发自收。将代码段中定义的10个数据09,通过串口发送和接收,存放在外部存储器7000H开始的单元中。实验内容一参考程序框图:三、

25、实验步骤及结果1、重复发送同一个数据,观察TXD端输出的波形。 程序代码: ORG00HSTART:MOVSCON,#50H;设置串口工作在模式1,接收使能 MOVTMOD,#20H;使用T1工作在模式2下 MOVTH1,#0F3H;波特率1200bps MOVTL1,#0F3H; SETBTR1; MOV A,#0DH ;将数据赋给ACC MOVSBUF,A ;发送数据送缓冲区WAIT: JNB TI,$;等待发送 CLR TI;若发送完,则清TI MOV SBUF,A; 未发完,则继续发送 AJMP WAIT; 循环发送 END 结果: 将P3.1口接到示波器观察会有二进制01011000

26、01的波形。2、自发自收。将代码段中定义的10个数据09,通过串口发送和接收,存放在外部存储器7000H开始的单元中。 程序代码:ORG00HSTART:MOVSCON,#50H;设置串口工作在模式1,接收使能 MOVTMOD,#20H;使用T1工作在模式2下 MOV DPTR,#7000H;将外部存储器初始地址赋给DPTR MOV R0,#00H; 将0赋给R0 MOVTH1,#0F3H; 波特率1200bps MOVTL1,#0F3H; SETBTR1; CLR A; 清ACCLOOP: MOV A,R0; 将待发数据赋给A INC R0; R0+1R0 CJNE R0,#0BH,WAIT

27、;判断是否发送完 SJMP $; 停机WAIT: MOV SBUF,A; 数据发送到缓冲区 JNB TI,$; 等待发送 CLR TI; 数据发送完,则清TI MOV SBUF,A; 未发完,则继续发送 MOV A,SBUF; 接收数据 JNB RI,$; 等待接收 CLR RI; 接收完,则清RI MOV A,SBUF; 未接收完,则继续接收 MOVX DPTR,A; 将接收的数据送到指定位置 INC DPTR ;DPTR自增1 JMP LOOP;跳回到LOOP,向串行口载入新数据。 END 结果: 程序运行前 运行后很明显看出完成能实验要求,将0-9通过串行通信存到外部存储器7000H开始

28、的单元。四、问题与讨论 做串口自发自收的实验时,一定要将P3.0口与P3.1口用导线连起来,还有数据发送和接收都用查询方式。刚开始用查表的方式将待发数据送A,这样就多次应用了DPTR寄存器,效率不高也很麻烦,后来用寄存器R0每次发送完后加1来实现将数据0-9赋给A。还有接收程序部分开始作为子程序调用,后来不用,直接放在发送程序后面就行了,整段程序变得很简单明了。附:实验六 装药生产线仿真一、 实验目的1)掌握仿真软件Proteus的应用。2)掌握系统设计的方法。3)掌握程序编写与调试。4)学会对系统进行改进。二、实验内容生产过程:制药厂有一条装药丸的生产线,单片机的P3.4脚,即Timer0的

29、外部事件输入端T0与生产线上的药丸漏斗上的红外传感器相连,每一颗药丸通过漏斗颈时,红外传感器都会检测到,并会向单片机的T0口输入一个脉冲信号。单片机的P1.0口控制阀门打开(1),或关闭(0),以控制药丸掉落到药瓶中的个数。每个药瓶装满20粒药丸后,单片机的P1.1口输出一个高电平,使得履带电机转动,履带则运送下一个空瓶到漏斗下,准备装药。P0口驱动一个2位的七段数码管,显示已经装好药丸的瓶数。设计完整系统模拟上述生产过程,并运用Proteus软件进行仿真。三、实验程序框图开始七段数码管清0设置Timer0工作模式设置计数值20启动计数器检查TF0位停止计数器关闭阀门七段数码管显示增加1驱动履

30、带传送TF0=0打开阀门四、实验步骤1、用LED模拟阀门和履带,用脉冲开关模拟药丸装入,数码管显示包装的瓶数。每输入20个脉冲,瓶数加1。程序代码:;装药丸出产线的程序,使用Timer做计数器。ORG00H;START:CLRA;累加器ACC清0MOVP0,A;七段数码管开始显示00SETUP:MOVTMOD,#05H;设置Timer0工作在计数器模式1下LOAD:MOVTH0,#0FFH;往TH0中载入计数初始值MOVTL0,#0ECH;往TL0中载入计数初始值RESTART:SETBTR0;启动Timer 0SETBP1.0;打开阀门CHECK:JNBTF0,CHECK;检测Timer溢出

31、标志,当TF0=1时,跳出CLRTR0;关闭Timer0CLRTF0;将TF0清0CLRP1.0;关闭阀门DISPLAY:ADDA,#01H;显示数据+1DAA;十进制调整MOVP0,A;输出到七段数码管显示DRIVE:SETBP1.1;置P1.1为1,履带传动。CALLDELAY;延时CLRP1.1;p1.1清0,履带停止JMPLOAD;循环DELAY: MOV R5,#10 ;延时5秒D500: MOV R6,#255 D1: MOV R7,#0FFH DJNZ R7,$ DJNZ R6,D1 DJNZ R5,D500 RET END仿真结果:2、要求显示4位,两位显示药粒,两位显示瓶数。

32、改动:(1)硬件,要加两个数码管和74LS47(BCD-7段数码管译码器/驱动器) P2口用于和扩展的这两个数码管相连。(2)软件,若还用定时计数器,那计数器的数字为1,时间常数为FFFF(工作在方式1)程序代码:ORG00H;START:CLRA;累加器ACC清0MOVP0,A;七段数码管开始显示00MOVP2,AMOV 30H,A;30H单元中,放药粒数MOV31H,A;31单元中,放瓶数SETUP:MOVTMOD,#05H;设置Timer0工作在计数器模式1下LOAD1: CLRACLRP1.1;关闭履带SETBP1.0;打开阀门LOAD2:MOVTH0,#0FFH;往TH0中载入计数初

33、始值MOVTL0,#0FFH;往TL0中载入计数初始值,计数一次,SETBTR0;启动Timer 0 CHECK:JNBTF0,CHECK;检测Timer溢出标志,当TF0=1时,跳出CLRTR0;关闭Timer0CLRTF0;将TF0清0DISPLAY:MOVA,30H;计数药粒ADDA,#01 DA A;十进制调整MOV30H,AMOVP2,A;输出到七段数码管显示; CJNEA, #20H, LOAD2;如果没有到20粒,再计数,到了清零,重新计数。CLR AMOV P2,A;清零MOV30H,AMOV A,31H;取出瓶数ADDA,#01DAAMOV31H,A;保存瓶数MOVP0,A;

34、输出瓶数DRIVE: CLRP1.0;关闭阀门 SETBP1.1;置P1.1为1,履带传动。 CALLDELAY;延时 CALLDELAY CLRP1.1;p1.1清0,履带停止JMPLOAD1;循环DELAY: MOV R5,#10 ;延时2秒D500: MOV R6,#255 ;D1: MOV R7,#0FFHDJNZ R7,$DJNZ R6,D1DJNZ R5,D500RETEND仿真结果:3、简化系统,应用74lLS595 串入并出程序代码: ST1EQUP1.2 ST2EQUP1.3 ORG00H;START: MOV 30H,A;30H单元中,放颗粒数 MOV31H,A;31单元中

35、,放瓶数 MOVscon,#00H;设置串口工作在模式0下。SETUP:MOVTMOD,#05H;设置Timer0工作在计数器模式1下LOAD1: CLRACLRP1.1;关闭履带SETBP1.0;打开阀门LOAD2:MOVTH0,#0FFH;往TH0中载入计数初始值MOVTL0,#0FFH;往TL0中载入计数初始值,计数一次,SETBTR0;启动Timer 0 CHECK:JNBTF0,CHECK;检测Timer溢出标志,当TF0=1时,跳出CLRTR0;关闭Timer0CLRTF0;将TF0清0DISPLAY:MOVA,30H;计数药粒,(30H)单元中存放十进制的药粒数。ADDA,#01

36、 DAA;十进制调整MOV30H,AMOVR0,A;ANLA,#0FH;MOV40H,A;(40H)和(41H)单元中是存放的对应的(30H)的 拆分后的BCD码,MOVA,R0SWAPAANLA,#0FHMOV41H,A;MOVDPTR,#TAB;取LED段码MOVA,40HMOVCA,A+DPTRMOV50H,A;(50H)和(51H)单元存放的是药粒对应BCD码的LED段码。MOVA,41HMOVCA,A+DPTRMOV51H,A MOVR0,#51H;串口传送药粒的高位和低位,通过串口,和串并转换相片74LS595,显示(50H)和(51H)单元中的LED段码 CLRST1 ;设输出脉冲为低电平, MOVA,R0 ;通过串口将(51H)和(50H)中的药粒数,输出到串并转换芯片74LS595, MOVSBUF,A JNBTI,$ CLRTI DECR0;准备传送显示药粒的低位 MOVA,R0 MOVSBUF,A JNBTI,$ CLRTI SETBST1;设输出脉冲为高电平,这样产生了一个上升沿,让74LS595的数据输出,驱动数码管显示。 MOVA,30H

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号