1、 微机原理与单片机技术课程 实验教学指导书 第三版 (基于 598K3 实验箱(00H)送 R0,R0 为计数器 - 8 - MOV DPTR,#2000H ;(2000H)送 DPTR LOO1: CLR A ;累加器 A 清零 MOVX DPTR,A ;存储空间内容清零 INC DPTR ;DPTR 加 1 INC R0 ;R0 加 1 CJNE R0,#00H,LOO1 ;若 R0 不等于00,则跳转至 LOO1 继续循环 LOOP: SJMP LOOP END (2)C 语言程序(文件名clear.C) - 9 - 实验二 P3.3 口输入,P1 口输出 一、 实验目的: 掌握P3 口
2、、P1 口简单使用。 二、 实验内容: P3.3 口输入一脉冲,P1 口按16 进制加一方式点亮发光二极管。 三、实验程 序框图 - 10 - 开始 A初始化为0 P3.3为高电平吗? 延时 P3.3真的为高电平 吗? P3.3为低电平吗? 延时 P3.3真的为低电平 吗? A=A+1 A入栈 A取反 A送P1口 A出栈 Y Y Y N N N N Y四、实验接 线图 - 11 - 五、实验步 骤 P3.3 用导线连至K1 开关, P1.0P1.7 导线连至L1L8,K1 拨动一次, L1L8 发光二极管按16 进制方式加一点亮。 快捷连线说明:P3.3K1 P1.0P1.7L1L8(发光二极
3、管) 六、思考: 修改程序,使发光二极管左移方式点亮。 七、参考程序 (1)汇编语言程序(文件名P33INP1O.ASM) ORG 0000H LJMP J100 ORG 0810H J100: MOV A,#00H ;A初始化为0 J101: JB P3.3,J101 ;P3.3为高电平,继续循 环 MOV R2,#10H ; 延时 LCALL DELY JB P3.3,J101 ; 确认P3.3 是否为高 电 平 J102: JNB P3.3,J102 ;P3.3为低电平,继续循 环 MOV R2,#10H ; 延时 LCALL DELY JNB P3.3,J102 ; 确认P3.3 是否
4、为低 电 平 INC A - 12 - PUSH ACC ;A入栈 CPL A ;A 取反 MOV P1,A ;A 送P1口 POP ACC ;A 出栈 AJMP J101 DELY: PUSH 02H ; 延时程序 DEL2: PUSH 02H DEL3: PUSH 02H DEL4: DJNZ R2,DEL4 POP 02H DJNZ R2,DEL3 POP 02H DJNZ R2,DEL2 POP 02H DJNZ R2,DELY RET END (2)C 语言程序(文件名P33INP1O.C) - 13 - 实验三 中断实 验 一、 实验目的: 掌握MCS-51 单片机中断原理以及编程
5、使用方法;理解下降沿中断和低电 平中断的区别。 二、实验预备知识 传统的MCS-51 单片机有2 个由/INT0、/INT1 引脚输入的外部中断源,触 发外部中断有两种方式,即下降沿引起中断或低电平引起中断。而实验箱51- CPU 板使用的IAP15W4K58S4 可扩展到4 个外部中断源,触发外部中断有两种方 式,即下降沿引起中断或下降沿、上升沿都引起中断(无传统的低电平触发方 式)。当编程TCON 中的ITi(i=1 或0,下同)为1 时,则引起触发的方式为 边沿触发方式,反之为低电平触发方式。每个中断源的中断请求能否得到响应 要受两级“开关”的控制,即一个总“开关”EA 和EXi 的控制
6、,只有当EA 为 1,且对应的分“开关” EXi 也为1 时,相应中断源的中断请求才能被响应。 外部中断0、外部中断1 对应有2 个固定的中断服务程序入口地址 0003H、0013H。 响应中断后中断申请标志IEi 由硬件自动清零。 三、实验内容 编写主程序,读取K1 状态,当其与地端闭合时(P1.3 为低电平)初始化 为低电平触发,反之,初始化为下降沿触发,且发光二极管灭;编写中断服务 程序,使图中的发光管闪烁5 次,间隔250ms,即中断服务程序的执行时间为 2.5 秒,退出中断程序时,使发光管灭。 四、实验程序框图 (图中的“低电平触发“改为:下降沿、上升沿都触发) - 14 - 五、实
7、验接线图 (图中的“电平触发“改为:下降沿、上升沿都触发) 六、实验步骤 把“总线插孔”框中的P1.2、P1.3、P3.2 分别连L1、 K1、“单脉冲与 时钟”的“ ”孔。 快捷连线说明:P1.2L1, P1.3K1, P3.2 七、思考: - 15 - 1.要LED 亮5 次,程序应如何改动? 2.若改为外部中断1 来实现以上实验,如何修改实验的硬件和软件? 3.电平触发在输入信号后,灯闪的次数受谁的控制? 八、参考程序 (1)汇编语言程序(文件名 int0ASM) ORG 0000H LJMP MAIN ORG 0003H ; 外中断0 入口 地址 LJMP INTER0 ; ORG 0
8、660h MAIN: JB P1.3,MAIN1 ;通过P1.3 设置INT0是 下降沿触 发 还是上升 沿 和下降沿 都 会触发 CLR IT0 ; 中断初始化 ,上升沿 和 下降沿 都会 触发中断 LJMP MAIN2 MAIN1: SETB IT0 ;中断初始化 ,P1.3=1下降沿边缘 触 发中断 MAIN2: ORL IE,#81H ORL IP,#02H LJMP MAIN INTER0: CLR EA ;中断处理程序 CPL P1.2 LCALL DELY SETB EA RETI DELY: MOV R5,#10H ;延时 DELY1: MOV R6,#00H ;延时 DELY
9、2: MOV R7,#00H DELY3: DJNZ R7,DELY3 DJNZ R6,DELY2 DJNZ R5,DELY1 RET END (2)C 语言程序 - 16 - 实验四 定时/计 数器基 础实验 一、 实验目的: 掌握MCS-51 单片机内部定时/计数器的程序设计与调试方法。 二、实验预 备知识 MCS-51 单片机有两个16 位的定时计数器T0 和T1,它们都有定时和对外 部事件进行计数的功能,可用于定时控制、对外部事件检测和计数等场合。计 数和定时实质上都是对脉冲信号进行计数,只不过脉冲源不同而已。 当工作在定时方式时,计数脉冲来自单片机的内部,即振荡器信号12 分 频后作
10、计数脉冲,每个机器周期的时间使计数器加1,由于计数脉冲的频率是 固定的(即每个脉冲为1 个机器周期的时间),故可通过设定计数值来实现定 时功能; 当工作在计数方式时,计数脉冲来自单片机的引脚,每当引脚上出现一个 脉冲时,计数器加1,从而实现计数功能。可以通过编程来指定定时/计数器的 功能,以及它的工作方式。 中断申请标志TF,在中断响应后有硬件中断清零,查询方式时必须由软件 清零。 IAP15W4K58S4 多达7 个定时器,其中5 个16 位可重装载定时/计数器 (T0/T1/T2/T3/T4,其中T0/T1 兼容普通8051 的定时/计数器),并均可实现对 外可编程时钟输出(5 通道),另
11、外管脚MCLKO 可将内部主时钟对外分频输出 (1 或2 或4 或16),2 路CCP 还可再实现2 个定时器。 三、实验内 容 利用定时器1,通过对外部脉冲的计数,利用查询方式,实现在P1.0 引脚 上产生输出信号。 四、实验程 序框图 五、实验接 线图 六、实验步 骤 七、思考: - 17 - 1.开关来回拨4 次才取反,程序应如何修改? 2.采用中断方式,该如何设计程序? 八、参考程 序 (1)汇编语言程序 (2)C语言程序 - 18 - 实验五 74LS164 串进并出实 验 一、实验目的 1、了解74LS164 芯片的工作原理,以及与单片机的接口方法。 2、掌握单片机串行口的工作原理
12、以及编程方法。 二、实验内容 用74LS164 芯片扩展并行输出口,本实验中我们用74LS164 扩展两个8 位 输出口的接口显示电路,两位数码管循环显示0099 之间的数字。 三、编程指南 1、本实验中MCS-51 单片机串行口工作在方式0(移位寄存器方式,用于 并行I/0 口扩展)的发送状态时,串行数据由P3.0(RXD)送出,移位时钟由 P3.1(TXD)送出。在移位时钟的作用下,串行口发送缓冲器的数据一位一位 地移入74LS164 中。需要指出的是,由于741S164 无并行输出控制端,因而在 串行输入过程中,其输出端的状态会不断变化,故在某些应用场合,在 74LS164 的输出端应加
13、接输出三态门控制,以便保证串行输入结束后再输出数 据。 2、74LS164 引脚功能图 管脚说明: SIA、SIB - Serial inputs Q0 through Q7 - Data outputs CLK - CLOCK CLR - Clear input - 19 - 功能表: 3.数码管的字段分配 (1)一个数码管有八段:A,B,C,D,E,F ,G,H,DP,即由八个发光二极管组成; 因为发光二极管导通的方向是一定的(导通电压一般取为 1.7V),这八个发 光二极管的公共端有两种:可以分别接+5V(即为共阳极数码管)或接地(即为共 阴极数码管);故可分共阳极(公共端接高电平或+5
14、V 电压)和共阴极(共低电 平或接地)两种数码管 (2)其中每个段均有 0(不导通)和 1(导通发光)两种状态,但共阳极数码管 和共阴极数码管显然是不同的 (3)它在程序中的应用是用一个八位二进制数表示,A 为最低位,.,F 为最高位 (第八位) (4)驱动方式 直流驱动 是指每个数码管的每一个段码都由一个单片机的 I/O 端口进行驱动,或者使用 如 BCD 码二-十进制译码器译码进行驱动。优点是编程简单,显示亮度高,缺点是 占用 I/O 端口多。 动态显示驱动 是将所有数码管通过分时轮流控制各个数码管的的 COM 端,就使各个数码管 轮流受控显示。将所有数码管的 8 个显示笔划“ A,B,C
15、,D,E,F ,G,H,DP “的同名端连 在一起,另外为每个数码管的公共极 COM 增加位选通控制电路,位选通由各自独 立的 I/O 线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但 究竟是那个数码管会显示出字形,取决于单片机对位选通 COM 端电路的控制,所 CLR SIA SIB CLK Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 0 X X X 0 0 0 0 0 0 0 0 1 1 1 1 Q0 Q1 Q2 Q3 Q4 Q5 Q6 1 0 X 0 Q0 Q1 Q2 Q3 Q4 Q5 Q6 1 X 0 0 Q0 Q1 Q2 Q3 Q4 Q5 Q6 - 20 - 以我
16、们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的 数码管就不会亮。 (5)编码 共阳极: 位选为高电平(即 1)选中数码管, 各段选为低电平(即 0 接地时)选中各数码段, 由 0 到 f 的 C 语言编码为: unsigned char code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; 由 0 到 f 的汇编语言编码为: TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 80H,90H,88H,
17、83H,0C6H,0A1H,86H,8EH 共阴极: 位选为低电平(即 0)选中数码管, 各段选为高电平(即 1 接+5V 时)选中各数码段, 由 0 到 f 的 C 语言编码为: unsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; 由 0 到 f 的汇编语言编码为: TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H 四、实验接线图 五、
18、实验步骤 用双头线连接,P3.0 接插孔A/B,P3.1 接插孔CP,P1.0 接插孔/CLR,调 入程序运行,两位数码管上循环显示数字0099。 - 21 - 快捷连线说明:P3.0A/B P3.1CP P1.0/CLR 注意:因IAP15W4K58S4-CPU 板仿真器占用了P3.0、P3.1,所以上述P3.0、P3.1 实际连接使用的分别是IAP15W4K58S4 的P3.6、P3.7 口,所以编程时,需将串口 1 切换到P3.6、P3.7 使用。 六、思考: 修改程序,使两位数码管上循环显示数字5500,以递减方式显 示。 七、参考程序 (1)汇编语言程序 / 以下4 条指令为 对IA
19、P15W4K58S4 单片机增 加 的设置 AUXR EQU 08EH /辅助寄存器 P_SW1 EQU 0A2H /外设功能切 换寄存器1 S1_S0 EQU 40H /P_SW1.6 S1_S1 EQU 80H /P_SW1.7 ORG 0000H LJMP MAIN ORG 0100H MAIN: CLR EA MOV SP,#3FH / 以下4 指令为对IAP15W4K58S4单 片机增加 的 设置 MOV A,P_SW1 ANL A,#03FH /S1_S0=1 S1_S1=0 ORL A,#S1_S0 /(P3.6/RxD_2, P3.7/TxD_2) MOV P_SW1,A /
20、以上指令为对IAP15W4K58S4单片 机增加的 设 置 MOV 30H,#00H ;给显示缓 冲区赋初 值 MOV 31H,#00H L0: SETB P1.0 ;164 清零端CLR 置1 (低电平 有效) - 22 - INC 30H MOV A,30H CJNE A,#0AH,AA MOV 30H,#00H INC 31H MOV A,31H CJNE A,#0AH,AA MOV 30H,#00H MOV 31H,#00H ;使31H ,30H单元 内容在0099 循环变化 AA: MOV SCON,#00H ;设置串行口 MOV R7,#02H ; 设置要发送 的 字节个数 MOV
21、 R0,#30H ; 设置地址指 针 MOV DPTR,#TAB LOOP: MOV A,R0 MOVC A,A+DPTR ;取出字型码 MOV SBUF,A ;发送 WAIT: JNB TI,WAIT ;等待一帧发 关 完毕 CLR TI INC R0 ;指向下一个 字 形码 DJNZ R7,LOOP MOV R2,#30H ;调用延时子 程 序 LCALL DELYA CLR P1.0 ;164 清零端CLR 置0 (低电平 有效) SJMP L0 TAB: DB 3FH,06H,5BH,04FH,66H,6DH,7DH,07H,7FH,6FH ; 七段LED段选码(共 阴 极) DB 7
22、7H,7CH,39H,5EH,86H,8EH,0FFH,0F1H,0C6H,092H,0BFH DELYA: PUSH 02H ;延时子程序 DELYB: PUSH 02H DELYC: PUSH 02H DELYD: DJNZ R2,DELYD POP 02H DJNZ R2,DELYC POP 02H DJNZ R2,DELYB POP 02H DJNZ R2,DELYA - 23 - RET END (2)C 语言程序 - 24 - 实验六 8255 PA 口控制 PB 口 一、 实验目的 掌握单片机系统中扩展外围芯片的方法,了解8255 芯片的结构及编程方 法。 二、实验预备知识 82
23、55A 是40 引脚双列直插式芯片,片内有A, B, C 3 个8 位I/O 端口,可 提供24 条可编程的输入/输出端口线。 8255A 的内部结构由三部分电路组成:与CPU 的接口电路、内部控制逻辑电 路和与外设连接的输入/输出接口电路。内部结构及引脚信号如下图所示。 - 25 - 对于8255A 的3 个数据端口和1 个控制端口,数据端口既可以写入数据又可 以读出数据,控制端口只能写入命令而不能读出,读/写控制信号 ( , )和端口选择信号( , A1 和A0)的状态组合可以实现A, B, C 3 个端口和控制端口的读/写操作。 8255A 的端口分配及读/写功能见表。 8255A 的工
24、作方式及其初始化编程 - 26 - 8255A 有三种工作方式:基本输入/输出方式、单向选通输入/输出方式和双 向选通输入/输出方式。 1 8255A 的工作方式 (1 )方式0 :基本输入/ 输出方式(basic Input/Output) 方式0 是8255A 的基本输入/输出方式,其特点是与外设传送数据时,不需 要设置专用的联络(应答)信号,可以无条件的直接进行I/O 传送。 A, B, C 3 个端口都可以工作在方式0。 A 口和B 口工作在方式0 时,只能设置为以8 位数据格式输入/输出; C 口工作在方式0 时,可以高4 位和低4 位分别设置为数据输入或数据输出 方式。 方式0 常
25、用于与外设无条件数据传送或查询方式数据传送。 (2 )方式1 :单向选通输入/ 输出方式(strobe Input/Output ) 方式1 是一种带选通信号的单方向输入/输出工作方式,其特点是:与外设 传送数据时,需要联络信号进行协调,允许用查询或中断方式传送数据。 由于C 口的PC0, PC1 和PC2 定义为B 口工作在方式1 的联络信号线,PC3, PC4 和PC5 定义为A 口工作方式1 的联络信号线,因此只允许A 口和B 口工作在 方式1。 (3 )方式2 :双向选通输入/ 输出方式(bi-directional bus) 方式2 为双向选通输入/输出方式,是方式1 输入和输出的组
26、合,即同一端 口的信号线既可以输入又可以输出。由于C 口的PC7PC3 定义为A 口工作在方 式2 时的联络信号线,因此只允许A 口工作在方式2。 2 8255A 初始化编程 8255A 的A,B,C 三个端口的工作方式是在初始化编程时,通过向8255A 的 控制端口写入控制字来设定的。 8255A 由编程写入的控制字有两个:方式控制字和置位/复位控制字。方式 控制字用于设置端口A, B, C 的工作方式和数据传送方向;置位/复位控制字用 于设置C 口的PC7PC0 中某一条口线PCi(i07)的电平。两个控制字公用 一个端口地址,由控制字的最高位作为区分这两个控制字的标志位。 - 27 -
27、(1)方式控制字的格式 8255A 工作方式控制字的格式如下图所示。 D0:设置PC3PC0 的数据传送方向。D01 为输入;D00 为输出。 D1:设置B 口的数据传送方向。D11 为输入;D10 为输出 D2:设置B 口的工作方式。D21 为方式1;D20 为方式0。 D3:设置PC7PC4 的数据传送方向。D31 为输入;D30 为输出。 D4:设置A 口的数据传送方向。D41 为输入;D40 为输出。 D6D5:设置A 口的工作方式。D6D500 为方式0,D6D501 为方式 1,D6D510 或11 为方式2。 D7:方式控制字的标志位,恒为1。 例如,将8255A 的A 口设定为
28、工作方式0 输入,B 口设定为工作方式 1 输出,C 口没有定义,工作方式控制字为10010100B。 (2)C 口置位/复位控制字的格式 8255A C 口置位/复位控制字的格式如下图所示。 - 28 - 8255A C 口置位/复位控制字用于设置C 口某一位口线PCi(i07)输出 为高电平(置位)或低电平(复位),对各端口的工作方式没有影响。 D3D1:8 种状态组合000111 对应表示PC0PC7。 D0:用来设定指定口线PCi 为高电平还是低电平。当D01 时,指定口线 PCi 输出高电平;当D00 时,指定口线PCi 输出低电平。 D6D4 没有定义,状态可以任意,通常设置为0。
29、 D7 位作为标志位,恒为0。 例如,若把PC2 口线输出状态设置为高电平,则置位/复位控制字为 00000101B。 (3 )8255A 初始化编程 8255A 的初始化编程比较简单,只需要将工作方式控制字写入控制端口即 可。另外,C 口置位/复位控制字的写入只是对C 口指定位输出状态起作用,对A 口和B 口的工作方式没有影响,因此只有需要在初始化时指定C 口某一位的输出 电平时,才写入C 口置位/复位控制字。 三、实验内容 用8255 PA 口作开关量输入口,PB 口作输出口。 - 29 - 四、实验程序框图 开始 8255初始化 A口内容读出 A口状态向B口输 出 循环五、实验连线图 六
30、、实验步骤 - 30 - 8255 PA 口接KlK8,PB0PB7 接L1L8 运行程序,按K1K8,观察 L1L8 发光二极管是否对应点亮。 快捷连线说明:PA0PA7K1K8 PB0PB7L1L8 此8255 芯片的I/O 地址分配如下: 8255 的控制口地址为0FF2BH; 8255 的PA 口(字位控制口)地址为0FF28H; 8255 的PB 口(字形控制口)0FF29H。 8255 的PC 口(键入口)0FF2AH。 七、思考: 修改设计用8255 PB 口作开关量输入口,PA 口作输出口。 八、参考程序 (1)汇编语言程序 ORG 0000H LJMP SE17 ORG 07
31、70H SE17: MOV DPTR,#0FF2BH ;8255控制口初始化 MOV A,#90H MOVX DPTR,A LO32: MOV DPTR,#0FF28H ;PA口地址送 入DPTR MOVX A,DPTR ;PA口状态送 入A 中 INC DPTR ;DPTR加1 ,DPTR 为PB口地址 MOVX DPTR,A ;A(PA口状态)送入到PB 口 SJMP LO32 END (2)C 语言程序 - 31 - 实验七 八段 LED 数码管显示 实验 一、实验目的 (1)掌握8 段LED 数码管管动态显示的原理及编程方法。 (2)熟悉8255 接口芯片的编程与应用。 二、实验内容
32、利用实验仪已有6 位8 段码LED 显示电路,用动态方式循环显示一组数 据。 三、实验程序框图 四、实验接线图 - 32 - 位码由8255 的PA 口输出,字形由经8255 的PB 口输出。LED 八段管为共 阴连接。 此8255 芯片的I/O 地址分配如下: 8255 的控制口地址为0FF23H; 8255 的PA 口(字位控制口)地址为0FF20H; 8255 的PB 口(字形控制口)0FF21H。 8255 的PC 口(键入口)0FF22H。 本实验不需另外接线,只须将拨码开关SW3、SW4 全部拨到”ON”状态即 可。 五、思考: 如要固定显示(如201211),程序应如何修改? 六
33、、参考程序 (1)汇编语言程序 - 33 - (2)C 语言程序 - 34 - 实验八 A/D 0809 转换 实验 一、实验目的 (1)掌握A/D 转换与单片机接口的方法; (2)了解A/D 芯片0809 转换性能及编程方法; (3)通过实验了解单片机如何进行数据采集。 二、实验内容 利用实验系统上的0809 做A/D 转换器,实验系统上的电位器提供模拟量 输入,编制程序,将模拟量转换成数字,通过数码管显示出来。 三、实验接线图 四、实验程序框图 - 35 - 开始 程序初始化 调用显示子程序 结束 0809 采样 采样值送显示缓存区五、实验步骤 IN0VOUT(可调电压输出口),VIN+5
34、V(直流电源),CS4FF80H, JX0JX6,WR/IOWR,RD/IORD,ADDA、ADDB、ADDC地(直流电源GND) CLK500K 运行程序,数码管上显示0809.XX,后二位显示当前采集的电压转 换的数字量,调节W1,该二位将随着电压变化而相应变化。 快捷连线说明:IN0VOUT VIN+5V CS4FF80H JX0JX6 WR/IOWR RD/IORD ADDA、ADDB、ADDCGND 六、思考 修改程序和ADDA、ADDB、ADDC 接线,用IN0、IN7 通道轮流采样。并送数 码管上显示Y .XX,Y 为通道号,XX 是采样数字量,每隔4S 采样一次,轮流循 环。
35、七、程序 (1)汇编语言程序 ORG 0000H LJMP SE11 - 36 - ; ORG 0590H DDFF: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH SE11: MOV SP,#53H ;堆 栈初始化 MOV P2,#0FFH ;P2口初始化 MOV A,#81H ;8255 控制口初 始化 MOV DPTR,#0FF23H MOVX DPTR,A MOV 7EH,#00H ;显 示缓冲区 初 值 MOV 7DH,#08H MOV 7C
36、H,#00H MOV 7BH,#09H MOV 7AH,#10H MOV 79H,#10H LO18: LCALL SSEE ;调用显示子 程 序 MOV A,#00H MOV DPTR,#0FF80H ;0809的0 通道采 样 MOVX DPTR,A MOV R7,#0FFH ; 延时 LO17: DJNZ R7,LO17 MOVX A,DPTR ;取出采样值 MOV R0,#79H LCALL PTDS SJMP LO18 ;采样值送显 示 缓冲区 ;ORG 05D0H PTDS: MOV R1,A ACALL PTDS1 MOV A,R1 SWAP A PTDS1: ANL A,#0F
37、H MOV R0,A INC R0 RET ;ORG 0D50H ;显示 子程序 SSEE: SETB RS1 ;换工作区 MOV R5,#05H - 37 - SSE2: MOV 30H,#20H MOV 31H,#7EH MOV R7,#06H SSE1: MOV R1,#20H MOV DPTR, #0FF20H ; MOV A,#0FFH ; 字段1 有效 MOVX DPTR, A ; 关 所有八段 管 MOV R0,31H MOV A,R0 MOV DPTR,#DDFF MOVC A,A+DPTR ;取字 形代码 MOV DPTR, #0FF21H; 送字形码 MOVX DPTR,
38、A ; 显 示一位八 段 管 MOV A,30H CPL A MOV DPTR,#0FF20H MOVX DPTR, A ; 位控口 MOV A,30H RR A MOV 30H,A DEC 31H MOV DPTR, #0FF20H ; MOV A,#0FFH ; 字段1 有效 MOVX DPTR, A ; 关所有八段 管 DJNZ R7,SSE1 ;六位显示完 了 吗? DJNZ R5,SSE2 ;5次 显示完了 吗 ? CLR RS1 RET END (2)C 语言程序 - 38 - 附录 A Keil C51 Vi s i o n 集成 开发环 境简介 Keil Vision IDE是
39、德国Keil公司开发的基于Windows平台的嵌入式集成开发环 境,它包含一个高效的编译器、项目管理器和一个MAKE工具。Keil Vision IDE包 括一系列工具,支持 ARM , Cortex -M, Cortex-R, 8051, C166, 和 251 处理器, 其中Keil C51 是一种专门为 8051 单片机设计的高效率C语言编译器,符合ANSI标 准,生成的程序代码运行速度极高,所需要的存储器空间极小,完全可以与汇编语 言媲美。 Keil Vision4 集成开发环境总体上可分为程序编辑、编译用户界面和程序调试 界面。程序编辑、编译用户界面如图 1.5 所示。Keil Vi
40、sion4 启动界面即为程序编 辑、编译用户界面,在此用户可进行汇编语言源程序或 C51 源程序的输入、编辑 与编译。选择菜单命令“Debug”“START/STOP Debug Session”或单击工具 栏的 图标,进入程序调试界面。 图 1.5 Vision4 程序编辑、编译用户界面 图1.6 所示为程序调试用户界面,在此环境下可实现单步、跟踪、断点与全速 运行方式调试,并可打开寄存器窗口、存储器窗口、I/O 并行端口窗口、定时/计 数器窗口、中断窗口、串行窗口以及自定义变量窗口进行控制与监控。再次单击工 具栏的 图标,返回程序编辑、编译用户界面。 - 39 - 图 1.6 Vision
41、4 程序编辑、编译用户界面 在 Keil Vision4 集成开发环境中使用工程项目的方法来管理文件,而不是单 一文件的模式。所有的文件包括头文件和源程序(汇编语言源程序、C51 语言源 程序) ,甚至说明性的技术文档都可以放在工程项目文件里统一管理。例如,在 D 盘,新建一个工程项目文件夹,名为:p1out。Keil Vision4 集成开发环境的开 发流程如下: 创建项目新建、输入、编辑应用程序把程序文件添加到项目中编译与连 接、生成机器代码文件仿真调试程序。 1建立项目工程 Keil C51 Vision 包括一个项目管理器,它可以使 80x51 应用系统的设计变 得简单。要创建一个应用,需要按下列步骤进行操作: (1)启动 Vision4,新建一个项目文件并从器件库中选择一个器件。单击 ProjectNew Vision Project 选项,在弹出的窗口中输入准备建立的工程文件 名,其后缀名系统会自动添加为*.uvproj。