1、附录A 实 验 附录A 实 验 实验一实验一 MCS-51MCS-51单片机及其开发系统单片机及其开发系统 (仿真器仿真器)的认识的认识实验二实验二 MCS-51MCS-51指令系统指令系统实验三实验三 MCS-51MCS-51指令系统综合练习指令系统综合练习实验四实验四 中断实验中断实验实验五实验五 显示器与定时中断显示器与定时中断实验六实验六 串行通信串行通信实验七实验七 键盘扫描键盘扫描实验八实验八 A/DA/D转换转换 实验九实验九 D/AD/A转换转换 附录A 实 验 实验一实验一 MCS-51单片机及其开发系统(仿真器)的认识单片机及其开发系统(仿真器)的认识 一、实验目的 (1)
2、了解MCS-51单片机开发常用工具。(2)了解仿真器构成、功能及连接。(3)掌握MCS-51开发软件(汇编器)安装、功能及基本操作。(4)掌握源程序的编辑、汇编、运行(包括连续执行、单步执行和跟踪执行)。(5)掌握汇编语言指令与机器语言指令之间的对应关系。(6)掌握ORG、DATA、BIT等伪指令的作用。(7)掌握在特定仿真开发系统下浏览、修改特殊功能寄存器、内部RAM、外部RAM单元的方法。(8)理解MCS-51单片机在复位期间及复位后有关引脚的状态、特殊功能寄存器的初值。附录A 实 验 二、实验器材二、实验器材 仿真器及附件(电源、仿真头、联机通讯电缆)、直流稳压电源(最好是单片机专用电源
3、)、逻辑笔、数字万用表各一套。附录A 实 验 三、实验电路三、实验电路 图 附A-1 EA/VPALE/PU189C52C133 pFC233 pF5VU27407U37407R1270812345611101234561011R28.2 kC310 FR3510RSTR42.0 kabfcgde1234567abcdefg8dpdp910VDY13.6864 MHZ12456U4A74LS21INT0TMROUT6TMRIN3RESET4U58155HP3.7P3.6RSTRSTA01A12A23Vss4SDA5SCL6WP7Vcc8U624WC02P3.4P3.55V5 V19189171
4、61213141512345678111020X1X2RESETRD/P3.7WR/P3.6INT0/P3.2INT1/P3.3T0/P3.4T1/P3.5P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7TXD/P3.1RXD/P3.0GNDP0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7PSENVCC3139383736353433322122232425262728293040AD0AD1AD2AD3AD4AD5AD6AD7A15A14ALE5 VAD0AD1AD2AD3AD4A
5、D5AD6AD7A15A14ALEP3.6P3.712131415161718198910711AD0AD1AD2AD3AD4AD5AD6AD7CERDWRIO/MALEPA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7PC0PC1PC2PC3PC4PC5212223242526272829303132333435363738391255 V附录A 实 验 表 附A-1 名 称型 号封 装数 量备 注CPU89C52(或89C52X2)DIP401 驱动器7407DIP142 4输入与门74LS21DIP141 共阳八段LED数码管 1 晶振3.6
6、864 MHz 1 按键 9或17 DIP40插座 4 DIP14插座 3 DIP8插座 12可选RS232电平转换芯片MAX232DIP161可选并行口扩展芯片8155DIP401可选I2C总线EEPROM存储器24WC02DIP81可选附录A 实 验 该实验电路具有如下一些特点。1.结构简单结构简单 该电路所需元器件少,费用低,它几乎能完成“单片机原理与应用”课程所必须的基本实验项目,如:(1)复位期间、复位后各引脚状态测试。(2)I/O端口及禁止ALE引脚脉冲输出实验。(3)中断、定时/计数实验。(4)定时器T2可编程时钟输出实验。(5)LED显示及驱动实验。(6)键盘接口实验。(7)串
7、行通讯实验。附录A 实 验 2.可扩充性强可扩充性强 例如,增加RS232与TTL电平转换器件(如MAX232芯片)后,即具备RS232电平转换功能,使该电路串行口能与其他串行设备(如PC机)进行串行通讯。增加8155并行口扩展芯片后即具备并行口扩展功能和256字节外部RAM,即可进行外部RAM存取实验。增加I2C总线EEPROM存储器(如24WC02、24WC32)或日历时钟芯片PCF8563后,即可进行I2C总线设备存取实验。增加SPI总线接口器件,如EEPROM存储器或IDS4000系列语音芯片后即可进行SPI总线存取实验。附录A 实 验 3.安装焊接方便安装焊接方便 实验前,先在万能板
8、上焊好两个40引脚、三个14引脚IC插座、LED数码管、晶振和复位电路,并用导线段按原理图连接关系将电阻、电容、复位按钮、LED和IC引脚连接好。LED电源引脚、IC电源引脚连一起,作为实验电路板(目标板)的电源输入端VCC,接+5 V;所有地线引脚连在一起,作为实验电路板的地线GND,并用导线将实验电路板电源输入端VCC、地线GND分别接到直流稳压源+5 V和地线上。仿真时,仿真头插入目标板上40引脚的CPU(即U1)插座内。当然也可以将该实验电路(包括可选芯片、必要插座、接线头如电源插座、串行通信插座)做成印制板。附录A 实 验 四、实验内容四、实验内容 1.PC机机仿真器仿真器目标板目标
9、板(用户板用户板)的连接的连接 (1)联机通讯口。目前多数仿真器不带键盘、LED显示器,需与PC机配套使用。单片机仿真开发设备一般以串行方式与PC机通讯,通过联机通讯电缆将仿真器联机通讯口与PC机串行口(COM1或COM2)相连。(2)仿真插座。通过仿真电缆将仿真器与仿真头连在一起(有些仿真器、仿真头的插座没有采用防反插技术,连接时务必注意插座、插头方向)。作为特例,图2给出了E6000、E2000、E51系列仿真器与POP8X5X仿真头之间的连接方式,即仿真电缆一端与仿真器相连,另一端与仿真头相连。仿真头直接插入用户板上的CPU插座内。附录A 实 验 图 附A-2 401202134 芯 电
10、 缆仿真器仿 真 头20 芯 电 缆附录A 实 验 (3)电源插座。通过仿真器上的电源插座给仿真器提供工作电源,与仿真器电源(作为仿真器附件之一)相连。由于目标板上功耗不确定,因此多数仿真机(头)不给用户板提供电源,必须给用户板外接工作电源(一般为+5 V,具体数值与目标板上元器件工作电压有关,但外接电源电压不得超过5V+5%,否则可能损坏单片机应用系统中74系列逻辑电路芯片)。附录A 实 验 2.仿真软件安装及操作仿真软件安装及操作 仿真软件也称为汇编器。仿真器只有在仿真软件的支持下才能完成源程序的编辑(目前多数仿真软件均具有源程序编辑功能)、汇编(编译)、运行及调试。仿真软件功能强弱直接关
11、系到单片机应用系统的开发效率,一套功能齐全、性能良好、符合用户操作习惯的单片机开发系统,会使单片机开发项目由难变易、由繁变简、由不可能变可能,收到事半功倍的效果。不同仿真开发软件的功能、操作方式不尽相同,用户只能依据开发商提供的使用说明书或用户指南来安装、操作仿真开发软件。附录A 实 验 3.汇编语言源程序编辑、运行及调试汇编语言源程序编辑、运行及调试 输入、编辑、汇编、运行输入、编辑、汇编、运行(连续、单步执行连续、单步执行)如下程序段:如下程序段:;变量定义区 XVARDATA 30H YVARDATA 38H P10 BIT P1.0 ORG 0000H LJMP MAIN ORG 01
12、00H MAIN:附录A 实 验 MOV SP,#9FHMOV A,#55HMOV XVAR,AMOV R0,#XVARMOV R0,#01HINC R0MOV R0,#02HMOV R1,#YVARMOV A,R0MOV R1,APUSH Acc;在此处设置断点PUSH PSWMOV A,#0AAHSETB RS0CLR RS1MOV R0,#5AHMOV R1,#0A5HPOP PSW 附录A 实 验 POP ACCINC R1DEC R0MOV A,R0MOV R1,ACLR P10SETB P1.0CLR P10MOV 90H,#00HMOV 90H,#55HMOV 90H,#0FFM
13、OV P1,#00HMOV P1,#55HMOV P1,#0FFHSJMP$END 附录A 实 验 (1)找出每条指令的机器码,并与第3章指令码表对照,指出每一指令的功能、寻址方式、操作数书写形式。(2)在单步执行过程中,每执行一条命令后,观察并记录有关寄存器、内存单元的变化情况。设置断点后,再连续执行,记录30H、31H、38H单元内容,与复位后的内容进行比较,由此得出什么结论?(3)修改ORG 100H指令后的地址,重新汇编,观察程序代码在程序存储器中存放位置的变化情况。附录A 实 验 4.复位期间及复位后有关引脚状态、寄存器初值复位期间及复位后有关引脚状态、寄存器初值 按下复位按钮不放,
14、用逻辑笔测出并记录各I/O引脚的电平;复位后,再用逻辑笔测出I/O口引脚电平;读出复位后,各特殊功能寄存器的初值,并与表2-4进行比较。修改特殊功能寄存器、内部RAM及外部RAM单元内容,观察复位后相应单元内容有无变化,即可了解复位对特殊功能寄存器、内部RAM、外部RAM的影响。注:由于8XC5X CPU P1P3口引脚输出级电路采用准双向结构,上拉电阻大,电流小,对地线短路电流小,即I/O引脚具有“线与”功能,而P0漏极开路,也具有“线与”功能。因此,在测量I/O引脚电平、电压操作过程中,即使逻辑笔、表笔将两根I/O引脚短路也不会损坏I/O口(但不允许将I/O引脚与电源VCC短路)。附录A
15、实 验 实验二实验二 MCS-51指令系统指令系统 一、实验目的一、实验目的(1)理解MCS-51指令系统中常用指令功能和使用方法。(2)掌握汇编语言程序的输入、编辑、运行、调试方法。附录A 实 验 二、实验器材二、实验器材 仿真器及附件、图附A-1所示实验电路板、直流稳压电源各一套。注:对于具备“软件模拟”运行方式的仿真开发系统,如WAVE系列的仿真开发软件。本实验可以不用仿真器、实验电路板等硬件设备,在“软件模拟”状态下运行调试即可。附录A 实 验 三、实验内容三、实验内容 1.寻址方式寻址方式代码源程序指令源操作数寻址方式MOV R0,#4FH立即数寻址MOV A,#55H立即数寻址MO
16、V R0,A寄存器寻址MOV R1,4FH直接寻址MOV A,R1寄存器间接寻址MOVC A,A+DPTR变址寻址 SETB P1.1位寻址 附录A 实 验 2.高高128字节内部字节内部RAM与低与低128字节内部字节内部RAM之间的数据传之间的数据传送送 (执行前,先将高128字节内部RAM中的80H单元置为特定数值,如55H,以便验证)代码源程序指令 说明MOV R0,#80H;将高128字节内部RAM地址80H传到R0中MOV A,R0;将高128字节内部RAM 80单元内容传到A中 MOV 30H,A;把存放在A中数据传到内部RAM30H单元中 附录A 实 验 3.外部外部RAM与内
17、部与内部RAM之间的数据传送之间的数据传送 (执行前,先将内部RAM 30H单元置为特定数值,如0AAH,以便验证)代码源程序指令 说明;将内部RAM数据传送到外部RAM中MOV A,30H;将内部RAM 30单元内部传送到A中MOV DPTR,#1000HMOVX DPTR,A;把存放在A中数据传到外部RAM 1000H单元;将外部RAM数据传送到内部RAM中MOV DPTR,#1000HMOVX A,DPTR;把外部RAM 1000H单元内容传到A中 MOV 31H,A;把数据传送到内部RAM 31H单元中 附录A 实 验 4.把存放在程序存储器中的数表读到内部把存放在程序存储器中的数表读
18、到内部RAM中中 执行下列程序段后,验证数表中的数码是否已传送到内部RAM 30H39H单元中。代码源程序指令 说明MOV DPTR,#TAB;将表头地址传送到DPTR中MOV R0,#30HMOV R1,#00H;计数器初值00传送到R1中 附录A 实 验 LOOP:MOV A,R1MOVC A,A+DPTRMOV R0,A;把数表内容逐一传送到30H开始的内部RAM中INC R1INC R0CJNE R1,#0AH,LOOP;R1不等于0AH时,循环;数表ORG 1000HTAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H 附录A 实 验
19、 5.算术运行指令算术运行指令 假设16位(双字节)被加数、加数分别存放在内部RAM的30H33H中,和存放在内部RAM的40H42H单元中(数据存放规则是低字节存放在低地址、高字节存放在高地址中)。附录A 实 验 代码源程序指令 说明MOV A,30H;把被加数低8位传送到A中ADD A,32H;与加数低8位相加,结果存放在A中MOV 40H,A;把低8位相加结果存放在40H单元中MOV A,31H;把被加数高8位传送到A中ADDC A,33H;与加数高8位、进位Cy相加,结果存放在A中JC Next;有进位跳转MOV 42H,#00H;高8位相加没有进位,将42H单元清零SJMP Proe
20、ndNext:MOV 42H,#01H;高8位相加有进位,将42H单元置1Proend:MOV 41H,A;把高8位相加结果存放在41H单元中 附录A 实 验 实验三实验三 MCS-51指令系统综合练习指令系统综合练习 一、实验目的一、实验目的 (1)进一步理解MCS-51指令系统中常用指令功能、使用方法。(2)理解以I/O口作为源操作数时,哪些指令读锁存器,哪些指令读引脚。附录A 实 验 二、实验器材二、实验器材 仿真器及附件、直流稳压电源、万用表各一套,导线数条。图附A-1所示实验电路板一块,但需将U2、U3芯片从IC插座上拔出,使P1口引脚悬空。附录A 实 验 三、实验内容三、实验内容
21、在仿真机上输入并单步执行如下程序段,判定哪些指令读锁存器,哪些指令读引脚。1.验证验证“MOV C,P1.0”读操作对象读操作对象 SETB P1.0;P1.0引脚悬空,执行该指令后,观察P1.0锁存器的状态,并用万用表;测量P1.0引脚的电平状态MOV C,P1.0;执行后观察进位标志Cy的状态MOV C,P1.0;先用导线将P1.0引脚接地,再执行该指令,观察P1.0锁存器、进位;标志Cy的状态 尽管P1.0锁存器为1,但P1.0引脚接地,即P1.0引脚为低电平,因此指令执行后Cy标志为0,说明“MOV C,P1.x”指令读引脚,而不是读锁存器。附录A 实 验 2.验证验证“MOV A,P
22、1”指令读操作是锁存器还是指令读操作是锁存器还是I/O口引脚口引脚MOV P1,#55H;将P1.0、P1.2、P1.4、P1.6锁存器位置1。执行该指令后,观察P1口;锁存器的状态,并用万用表测量P1口各引脚的电平状态MOV A,P1;P1口引脚悬空,执行该指令后观察累加器Acc内容MOV A,P1;先用导线将P1.0、P1.2、P1.4、P1.6引脚接地,然后执行该指令,观;察累加器Acc的内容 尽管P1口锁存器内容为55H,对应的P1.0、P1.2、P1.4、P1.6锁存器为1,处于输入状态,因此将P1.0、P1.2、P1.4、P1.6引脚接地后,执行“MOV A,P1”指令后,累加器A
23、cc内容为00H,说明该指令也是读P1口引脚的。附录A 实 验 3.验证验证“AND A,P1”指令源操作数是指令源操作数是P1口锁存器还是口锁存器还是P1口引脚口引脚MOV P1,#0FH;将P1.0、P1.1、P1.2、P1.3锁存器位置1。执行该指令后,观察;P1口锁存器的状态,用万用表测量P1口各引脚的电平MOV A,#0FFH;把立即数FFH送累加器AccAND A,P1;P1口引脚悬空,执行该指令后观察累加器Acc内容MOV A,#0FFH;再把立即数FFH送累加器AccAND A,P1;用导线将P1.0、P1.1、P1.2、P1.3引脚之一或全部接地,然后执行;该指令,观察累加器
24、Acc的内容 附录A 实 验 4.验证验证“JB P1.0,LOOP”指令测试对象是指令测试对象是P1.0锁存器还是锁存器还是P1.0引脚引脚 P1.0引脚悬空(由于P1口具有上拉电阻,因此悬空的输入引脚相当于接高电平),执行如下程序段,观察指令跳转过程及执行后累加器Acc的内容。SETB P1.0MOV A,#0AAHJB P1.0,NEXTMOV A,#55HNEXT:NOP 然后,用导线将P1.0引脚接地,再执行上面程序段,观察指令跳转过程及执行后累加器Acc的内容。附录A 实 验 5.验证验证“INC P1”指令操作对象指令操作对象 MOV P1,#0FFH;将立即数FFH送P1口锁存
25、器 INC P1 用导线将P1.0引脚通过一个2 k电阻接+5 V电源(I/O引脚不能直接与+5 V电源相连,否则当I/O引脚对应的锁存器位为0时,下拉MOS管会因过流而损坏),然后执行该指令,观察锁存器P1内容,并用万用表测量P1.0引脚的电平。附录A 实 验 实验四实验四 中中 断断 实实 验验 一、实验目的一、实验目的 (1)理解MCS-51中断控制系统。(2)理解MCS-51中断识别、控制及优先级排队。(3)理解中断响应过程及条件。(4)理解中断入口地址,掌握中断初始化、中断服务程序结构及编写方法。附录A 实 验 二、实验器材二、实验器材 仿真器及附件、直流稳压电源、万用表各一套,导线
26、数条。图附A-1所示实验电路板一块,但需将U2、U3芯片从IC插座上拔出,使P1口引脚悬空。附录A 实 验 三、实验内容及电路三、实验内容及电路 1.理解外中断 初始化、中断标志有效时间、中断响应条件 用导线将 (即P3.2)引脚与P1.0引脚相连,即用P1.0引脚输出信号模拟外中断信号。实验程序如下:0INT0INTX_TIME DATA 2AH ;延迟时间参数XY_TIME DATA 2BH ;延迟时间参数Y;这两个单元确定的延迟时间为tTIME DATA 2CH ;延迟时间计数器,总的延迟时间为Timet附录A 实 验 ORG 0000HLJMP MAINORG 0003H;外中断入口地
27、址LJMP INTO ORG 0100HPROC MAINMAIN:MOV SP,#4FH;初始化堆栈指针SP;初始化外中断SETB IT0 ;边沿触发 CLR EX0 ;禁止 中断 SETB EA ;开中断SETB P1.0;P1.0引脚为高电平CLR P1.0;P1.0引脚为低电平,使P3.2引脚出现下降沿 SETB P1.0;使P1.0引脚恢复高电平(断点1)0INT0INT附录A 实 验 MOV TIME,#50MOV X_TIME,#198MOV Y_TIME,#250LCALL DELAYSETB EX0;允许 中断,断点2NOP;断点3NOP;断点4NOPSJMP$END;*通用
28、延迟子程序*;延迟时间参数在2AH(y)、2BH(x)单元中,总的延迟时间为t;t=(4y+2xy+10)T,其中T是机器周期。当晶振频率为12 MHz时,T=1 s;典型参数I:x=198,y=250时,延迟时间t=100 010 s,即近似100 ms;典型参数II:x=7,y=5时,延迟时间t=100 s;子程序名称:Delay 0INT附录A 实 验 PROC DelayDelay:PUSH PSW SETB RS0 CLR RS1 ;使用1区 MOV R7,Y_TIME;取延迟时间参数yLOOP1:MOV R6,X_TIME;取延迟时间参数x LOOP2:DJNZ R6,LOOP2
29、DJNZ R7,LOOP1 POP PSW RET END 附录A 实 验 ORG 1000HPROC INTOINTO:PUSH PSW;断点5 PUSH Acc ;不用切换工作寄存器区,因为中断服务程序中没有改写寄存器R7R0 MOV A,#55H NOP POP PSW RETI END 附录A 实 验 实验步骤:(1)复位后,观察并记录与中断有关各寄存器,如IE、TCON、IP的值。(2)在“断点1”设置断点,然后全速执行,并检查TCON寄存器内容。(3)取消断点1,设置断点2,复位后,再全速执行,并检查TCON寄存器内容。(4)取消断点1、2,设置断点3,复位后,再全速执行,并检查T
30、CON寄存器内容。(5)取消断点1、2、3,设置断点4和5,复位后,全速执行并检测TCON寄存器内容。(6)将 触发方式改为电平触发,重复以上操作即可发现,CPU不会自动清除电平触发外中断请求标志IE0。0INT附录A 实 验 2.验证中断优先级验证中断优先级 用导线将 (即P3.2)引脚与P1.0引脚、(P3.3)引脚与P1.1引脚相连,即可用P1.0、P1.1引脚输出信号模拟外中断信号 和 。实验程序如下:0INT1INT0INT1INTORG 0000HLJMP MAINORG 0003H;外中断入口地址LJMP INTOORG 0013H;外中断入口地址 LJMP INT1 附录A 实
31、 验 ORG 0100HPROC MAINMAIN:MOV SP,#4FH;初始化堆栈指针SP;初始化外中断SETB IT0 ;边沿触发;初始化外中断SETB IT1 ;边沿触发SETB EX0 ;允许中断SETB EX1 ;允许中断SETB EA ;开中断;CLR PX0;修改中断优先级;SETB PX1MOV P1,#0FFH;将立即数FF送P1口,使P1.0、P1.1同时为1MOV P1,#00H;将立即数00送P1口,使P1.0、P1.1同时为0MOV P1,#0FFH;将立即数FF送P1口,使P1.0、P1.1同时为1SJMP$;模拟主程序END 附录A 实 验 ORG 1000HP
32、ROC INTOINTO:PUSH PSW CLR RS0 SETB RS1 ;使用2区 MOV A,#AAH;断点1 POP PSW RETIEND附录A 实 验 ORG 2000HPROC INT1INT1:PUSH PSWSETB RS0SETB RS1;使用3区MOV A,#55H;断点2POP PSWRETI END 附录A 实 验 实验步骤:(1)先不修改中断优先级控制寄存器IP,设置了断点1、2后,全速执行,将暂停在“断点1”。复位后,各中断优先级均为0,于是 、都是低优先级,尽管 、同时有效,但同级中断CPU查询顺序是优先,因此全速执行后,暂停在断点1,说明同优先级时,CPU先
33、响应 。(2)修改中断优先级控制寄存器IP,将IP寄存器的PX1位置1(高),PX0位为0,然后全速执行,程序暂停在“断点2”处。说明当两个中断同时有效时,CPU优先响应高优先级。_0INT_1INT_0INT_1INT_0INT附录A 实 验 3.中断嵌套中断嵌套实验程序如下:ORG 0000HLJMP MAINORG 0003H;外中断 入口地址LJMP INTOORG 0013H;外中断 入口地址LJMP INT1ORG 0100HPROC MAINMAIN:MOV SP,#4FH;初始化堆栈指针SP;初始化外中断 _0INT_0INT_1INT附录A 实 验 SETB IT0 ;边沿触
34、发;初始化外中断SETB IT1 ;边沿触发SETB EX0 ;允许 中断SETB EX1 ;允许 中断SETB EA ;开中断;CLR PX0;优先级为0(低);SETB PX1;优先级为1(高)MOV P1,#0FFH;将立即数FF送P1口,使P1.0、P1.1同时为1CLR P1.0;外中断 有效SETB P1.0NOPSJMP$;模拟主程序END _0INT_1INT_0INT_1INT_0INT_1INT附录A 实 验 ORG 1000HPROC INTOINTO:PUSH PSWCLR RS0SETB RS1 ;使用2区CLR P1.1;外中断 有效SETB P1.1MOV A,#
35、AAHPOP PSWRETI END _1INT附录A 实 验 ORG 2000HPROC INT1INT1:PUSH PSWSETB RS0SETB RS1;使用3区MOV A,#55HPOP PSWRETI END 附录A 实 验 实验步骤:(1)先不修改中断优先级控制寄存器IP,复位后,单步执行,跟踪程序执行过程将发现:P1.0引脚出现低电平后,将进入外中断中断服务程序,尽管在中断服务程序中有效,但复位后,、都是低优先级,不能中断,因此必须等到中断服务程序运行结束后,才响应,因此不会出现中断嵌套。(2)修改中断优先级控制寄存器IP,将IP寄存器的PX1位置1(高),PX0位置0,然后单步
36、执行,跟踪程序执行过程即发现:P1.0引脚出现低电平后,将进入外中断中断服务程序,而在中断服务程序中有效,由于是高优先级,可以中断,有效后立即进入中断服务程序,待中断服务程序运行结束后,又返回 服务程序继续执行,最后返回主程序,因此出现了中断嵌套。附录A 实 验 实验五实验五 显示器与定时中断显示器与定时中断 一、实验目的一、实验目的 (1)理解LED数码管静态显示驱动电路组成、工作原理及限流电阻R的取值依据。(2)掌握中断初始化方法及定时中断服务程序的编写规则。(3)掌握LED动态显示驱动电路及驱动程序的编写方法。附录A 实 验 二、实验器材二、实验器材 仿真器及附件、直流稳压电源、数字万用
37、表、图附A-1所示实验电路板各一套。附录A 实 验 三、实验内容三、实验内容 1.测试实验电路测试实验电路 在特殊功能寄存器窗口内,将P1口锁存器置为00,如果LED数码显示器显示为“8.”,说明电路连接正确。用数字万用表分别测出限流电阻R1两端压降VR和电源VCC与LED数码管任一笔段之间的电压(该电压就是LED正向压降VF),然后计算出LED工作电流IF,并与实际值(VR/R)比较。附录A 实 验 2.利用定时中断功能循环显示0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F十六个数码(要求:数码显示停留时间为1秒)假设仿真机晶振频率为3.68640 MHz,则机器周期约为3.
38、25 s,即使定时器工作在方式1状态,最长定时时间为,即213333.3 s。对于1秒以上的超长定时,需要结合软件计数和定时中断方式进行。例如,利用定时器T0每隔100 ms发生一次中断,对中断进行计数,即可获得所需的定时时间。则定时器初值为:)(6864.3112216sMHz81634000100126864.32016T即8800H,因此TH0=88H,TL0=00H。附录A 实 验 参考程序ORG 0000HLJMP MAIN ORG 000BHLJMP CTC0;转入定时器T0中断程序入口地址 ORG 100HMAIN:MOV SP,#5FH;初始化堆栈指针MOV A,TMODANL
39、 A,#0F0HORL A,#01HMOV TMOD,A;定时器T0工作于方式1,定时MOV TH0,#88HMOV TL0,#00H;送初值SETB EA;开中断 附录A 实 验 SETB ET0;允许定时器T0产生中断MOV 30H,#00;初始化显示缓冲区(存放显示数码)MOV R0,#0AH;初始化显示时间计数器MOV DPTR,#1000H;初始化数据指针MOV A,30H;取显示数码MOVC A,A+DPTR;取笔段代码MOV P1,A;把笔段代码送P1口SETB TR0;启动定时器T0Here:SJMP Here;等待中断,虚拟主程序 ORG 0200HCTC0:MOV TH0,
40、#88HMOV TL0,#00H;重装初值PUSH AccDJNZ R0,OutCTC0 附录A 实 验 INC 30HMOV A,30H;取显示数码MOVC A,A+DPTR;取笔段码MOV P1,A;显示MOV R0,0AH;重置计数器MOV A,30HCJNE A,#0FH,CTC0OUTMOV 30H,#00H;重置显示数码OutCTC0:POP AccRETI;返回 ORG 1000HDB C0,F9,A4,B0,99,92,82,F8,80,90,88,83,C6,A1,86,8E 附录A 实 验 3.模拟LED动态显示(即每隔特定时间显示一个笔段,同样可以显示数码“8.”)为了避
41、免闪烁,笔段(在本实验中用一个笔段模拟动态显示驱动方式中的一位LED)刷新频率取50 Hz,即显示周期为20 ms,每笔段时间为2.5 ms。为此,可利用定时器T0每隔2.5 ms发生一次中断,则定时器初值为:768642500126864.32016T即FD00H。因此TH0=0FDH,TL0=00H。附录A 实 验 参考程序ORG 0000HLJMP MAIN ORG 000BHLJMP CTC0;转入定时器T0中断程序入口地址 ORG 100HMAIN:MOV SP,#5FH;初始化堆栈指针MOV A,TMODANL A,#0F0HORL A,#01HMOV TMOD,A;定时器T0工作
42、于方式1,定时MOV TH0,#0FDHMOV TL0,#00H;送初值 附录A 实 验 SETB EA;开中断SETB ET0;允许定时器T0产生中断MOV P1,#0FEH;使P1.0输出低电平,点亮a段SETB TR0;启动定时器T0Here:SJMP Here;等待中断,虚拟主程序 ORG 0200HCTC0:MOV TH0,#0FDHMOV TL0,#00H;重装初值PUSH AccMOV A,P1;读P1口内容RL A;左循环移位MOV P1,A;送P1口,显示下一字段POP AccRETI;返回 附录A 实 验 4.测量信号频率测量信号频率 利用定时器T2可编程时钟输出信号(从P
43、1.0引脚输出)作为定时器T0的外部计数脉冲,即用导线将P1.0引脚与P3.4引脚相连,对定时器T2可编程时钟输出信号进行计数,并验证。5.测量信号周期测量信号周期 用导线将P1.0引脚与P3.2引脚相连,利用定时器T2可编程时钟输出信号(从P1.0引脚输出)作为定时器T0的计数控制端,利用定时器T0测量定时器T2输出时钟信号周期,并验证。附录A 实 验 实验六实验六 串串 行行 通通 信信 一、实验目的一、实验目的(1)理解串行通信概念。(2)掌握MCS-51串行通信口的初始化方法、步骤。(3)掌握串行发送、接收程序的编写方法。(4)理解串行通信波特率误差范围。附录A 实 验 二、实验设备与
44、器材二、实验设备与器材 仿真器及附件、图附仿真器及附件、图附A-1所示实验电路板各两套,直流稳所示实验电路板各两套,直流稳压电源一台、导线数条。压电源一台、导线数条。附录A 实 验 三、实验电路三、实验电路 用导线将第一块实验电路板的TXD(发送端)引脚与第二块电路板的RXD(接收端)引脚相连,第一块实验电路板的RXD(接收端)引脚与第二块电路板的TXD(发送端)引脚相连;再用导线将两块电路板地线连在一起,这样就形成了没有联络信号的串行通信方式。分别插入仿真头,接好电源、地线。附录A 实 验 四、实验内容四、实验内容 1.串行通信格式的约定串行通信格式的约定 波特率(CPS)为4800。晶振频
45、率为3.6864 MHz,使用定时器T1溢出率作为发送、接收波特率,则定时器T1重装初值C=0FEH(不倍增)。数据位长度为9位,其中b7b0为数据位,b8为奇偶校验位。采用奇校验,即传送的8位数据中含有奇数个“1”时,校验位为1。附录A 实 验 数据帧格式为:0AAH(起始标志)+发送信息字节数(115)+信息+和校验假设发送的信息内容为007FH。正确接收后则发送A5作为应答信号。发送/接收缓冲区在30H3FH单元,40H单元记录发送/接收的字节数(b7作为缓冲数据有效标志)。发送采用查询方式、接收采用中断。附录A 实 验 2.参考程序参考程序;变量定义区TXDBDATA30H;发送缓冲区
46、TXDCDATA40H;发送/接收字节计数器NOONEBIT00H;帧首标志(接收)CGRXDBIT01H;接收失败标志RXDSTUBIT02H;接收状态(1表示在接收应答信号,0表示空闲;状态,可以接收对方送来的数据信息)ORG 0000HLJMP MAINORG 0023HLJMP UARTRXD ;串行口中断入口地址 附录A 实 验 ORG 0100HMAIN:MOV SP,#80H;初始化堆栈指针MOV TXDC,#00H;复位后,缓冲区数据无效CLR NOONE;帧首标志清零CLR CGRXDCLR RXDSTU;处于可以接收信息状态;-初始化定时器T1(串行口发送接收波特率)MOV
47、 A,TMOD ANL A,#0FH ORL A,#00100000B ;定时器T1工作在方式2(即自动重装初值),定时状态,由TR1控制 MOV TMOD,A MOV TL1,#0FEH MOV TH1,#0FEH ;波特率为4800(晶振频率为3.6864 MHz,不倍增)CLR ET1 ;T1用作波特率发生器,禁止T1中断 SETB TR1 ;启动定时器T1 附录A 实 验;-初始化串行通信口 MOV SCON,#11000000B;方式3,SM2位为0,以便接收奇偶校验位SETB ES ;允许串行口中断SETB REN ;允许接收 SETB EA ;开中断;模拟等待LOOP:MOV A
48、,TXDCJNB Acc.7,WAITLCALL TXD;如果缓冲区数据有效就发送WAIT:SJMP LOOP;循环等待;-串行发送子程序 附录A 实 验 PROC TXDTXD:PUSH PSWPUSH AccSETB RS0;使用3区SETB RS1CLR REN;禁止接收 CLR ES ;禁止串行中断,即在发送过程中,采用查询方式 CLR T1 ;清除T1 ;计算校验和MOV R0,#TXDCMOV A,R0CLR Acc.7MOV R3,A;取发送字节数MOV R2,A;把发送字节暂时保存在R2中 附录A 实 验 CLR A;清累加器MOV R0,#TXDB;数据缓冲区首址送R0LOO
49、P1:ADD A,R0INC R0DJNZ R3,LOOP1ANL A,#0FH;保留检验和的低4位MOV R0,A;保存检验和,检验和信息保存在数据信息后;发送帧起始标志 MOV A,#0AAH ;先发送帧起始标志AA MOV C,PSW.0 ;取奇偶标志(当A中含奇数个“1”,P为1,即可接收到的数据中 ;包括校验位在内,肯定含有偶数个“1”,除非错误 MOV TB8,C ;奇偶标志送TB8 MOV SBUF,A ;数据送SBUF寄存器,启动发送过程 JNB TI,$;未发送结束等待 CLR TI ;清除发送结束标志 附录A 实 验 JNB TI,$;未发送结束等待 CLR TI ;清除发
50、送结束标志;发送字节数INC R2;连同和校验信息,实际发送字节数多1 MOV A,R2 ;发送字节数送A MOV C,PSW.0 ;取奇偶标志(当A中含奇数个“1”,P为1,即可接收到的数据中 ;包括校验位在内,肯定含有偶数个“1”,除非错误 MOV TB8,C ;奇偶标志送TB8MOV SBUF,A ;数据送SBUF寄存器,启动发送过程 JNB T1,$;未发送结束等待 CLR T1 ;清除发送结束标志 MOV R0,#TXDB;发送数据缓冲区首地址送R0 附录A 实 验 LOOP2:MOV A,R0 ;取发送数据 MOV C,PSW.0 ;取奇偶标志 MOV TB8,C ;奇偶标志送TB
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。