单片机实验程序及流程图

单片机实验程序及流程图
单片机实验程序及流程图

《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义

三.程序清单及程序流程框图

ORG 0000H Array LJMP MAIN

MAIN: MOV R0,#30H

MOV R2,#10H

CLR A

A1: MOV @R0,A

INC R0

INC A

DJNZ R2,A1

MOV R0,#30H

MOV R1,#40H

MOV R2,#10H

A2: MOV A, @R0

MOV @R1,A

INC R0

INC R1

DJNZ R2, A2

MOV R1,#40H

MOV DPTR ,#4800H

MOV R2, #10H

A3: MOV A,@R1

MOVX @DPTR ,A

INC R1

INC DPTR

DJNZ R2,A3

MOV SP,#60H

MOV R2,#10H

MOV DPTR ,#4800H

PUSH DPL

PUSH DPH

MOV DPTR,#5800H

MOV R3,DPL

MOV R4,DPH

A4: POP DPH

POP DPL

MOVX A,@DPTR

INC DPTR

PUSH DPL

PUSH DPH

MOV DPL,R3

MOV DPH,R4 MOVX @DPTR,A INC DPTR

MOV R3,DPL

MOV R4,DPH

DJNZ R2,A4

MOV R0,#50H

MOV DPTR,#5800H MOV R2,#10H

A5: MOVX A,@DPTR MOV @R0,A

INC R0 INC DPTR DJNZ R2,A5

POP DPH POP DPL HERE: LJMP HERE

END

《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义

三.实验电路

四.程序清单及流程图

程序一

ORG 0000H

LJMP MAIN ORG 000BH LJMP IPTO MAIN: MOV SP, #30H MOV TMOD, #01H

CLR 00H SETB EA SETB ET0 MOV TH0, #3CH MOV TL0, #0B0H MOV R1, #14H SETB TR0 MOV A, #0feH MOV P1, A NT: JNB 00H, NT RL A MOV P1, A

CLR 00H LJMP NT IPTO: MOV TH0,

#3CH MOV TL0,

#0B0H

DJNZ R1, TIO

MOV R1, #14H

SETB 00H

TIO: RETI

END

程序二只需将程序一中“RL A”改为“RR A”即可实现其功能。程序三

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP IPTO

MAIN: MOV SP, #30H

MOV TMOD, #01H

CLR 00H

SETB EA

SETB ET0

MOV TH0, #3CH

MOV TL0, #0B0H

MOV R2, #0AH

MOV R1, #02H

SETB TR0

MOV A, #0feH

MOV P1, A

NT: SETB P3.0

NT0:JNB 01H, NT0

CLR P3.0

CLR 01H

NT1:JNB 00H, NT1

CLR 01H

RL A

MOV P1, A

CLR 00H

LJMP NT

IPTO:MOV TH0, #3CH

MOV TL0, #0B0H

DJNZ R2, TIO

MOV R2, #0AH

SETB 01H

DJNZ R1, TIO

MOV R1, #02H

SETB 00H

TIO: RETI

END

程序四(思考题程序)

ORG 0000H

LJMP MAIN

ORG 000BH

LJMP IPTO

MAIN: MOV SP, #30H

MOV P1, #0ffH

MOV TMOD, #01H

CLR 00H

SETB EA

SETB ET0

MOV TH0, #3CH

MOV TL0, #0B0H

MOV R1, #14H

SETB TR0

MOV A, #00H NT:JNB 00H, NT

INC A

MOV R3, A

CPL A

MOV P1, A

CLR 00H

MOV A, R3

LJMP NT

IPTO:MOV TH0, #3CH

MOV TL0, #0B0H

DJNZ R1, TIO

MOV R1, #14H

SETB 00H

TIO: RETI

END

《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义

三.电路原理图

四.程序清单及流程图

程序一ORG 0000H LJMP MAIN MAIN: M OV TMOD, #02H

MOV TH0, #9CH MOV TL0, #9CH

SETB TR0 SETB P1.0 HERE:JNB TF0, HERE

CPL P1.0 CLR TF0 LJMP HERE END 程序二 ORG 0000H LJMP MAIN ORG 000BH LJMP IPTO MAIN: M OV SP, #60H MOV TMOD, #02H MOV IE, #82H MOV TH0, #88H MOV TL0, #88H

SETB TR0 SETB P1.1 HERE: LJMP HERE IPTO: CPL P1.1

RETI END

程序三(思考题)

ORG 0000H

LJMP MAIN Array MAIN: M OV TMOD, #11H

MOV TH0, #0FEH

MOV TL0, #0D4H

MOV TH1, #0FFH

MOV TL1, #38H

SETB TR1

SETB P1.0

HERE: JNB TF1, HERE

CPL P1.0

SETB TR0

CLR TF1

CLR TR1

MOV TH1, #0FFH

MOV TL1, #38H

HERE1: JNB TF0, HERE1

CPL P1.0

SETB TR1

CLR TF0

CLR TR0

MOV TH0, #0FEH

MOV TL0, #0D4H

LJMP HERE

END

五.实验结果

周期为200us方波周期为240us方波

周期为500us占空比为2:5的方波

《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义

三、电路原理图

四、程序清单及流程图

程序1:ORG 0000H

LJMP MAIN

MAIN: MOV TMOD, #06H

MOV TH0, #9CH MOV TL0, #9CH SETB TR0

HERE:JNB TF0, HERE

CPL P1.0

CLR TF0

LJMP HERE

END

程序2:ORG 0000H

LJMP MAIN

ORG 000BH LJMP ITPO

MAIN: MOV SP, #60H

MOV TMOD, #06H

MOV TH0, #38H

MOV TL0, #38H

MOV IE, #82H

SETB TR0

HERE:LJMP HERE ITPO:CPL P1.0

RETI

END

程序3(思考题): ORG 0000H LJMP MAIN ORG 001BH LJMP ITPO MAIN: M OV SP, #60H

MOV TMOD, #62H MOV TH0, #9CH MOV TL0, #9CH MOV TH1, #0CEH MOV TL1, #0CEH MOV IE, #88H

SETB TR0 SETB TR1 SETB P1.0 HERE:JNB TF0, HERE

CPL P1.0 CLR TF0 LJMP HERE ITPO:CPL P1.1 RETI END

五、实验结果

程序1与程序2从T0接入1000Hz 的方波,思考题从P1.0口线产生的方波从T1接入

计100次脉冲 计200次脉冲

思考题波形

《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义

三、电路原理图

四、程序清单及流程图

程序一:ORG 0000H LJMP MAIN ORG 0003H LJMP EXTER0 ORG 000BH LJMP IPTO ORG 00013H LJMP EXTER1 MAIN: M OV SP, #60H MOV TMOD, #11H MOV IE, #87H MOV IP, #02H MOV TH0, #9EH MOV TL0, #58H MOV TH1, #0D8H MOV TL1, #0F0H HERE:LJMP HERE DELAY:SETB TR1 HEREY:JNB TF1, HEREY CLR TR1 CLR TF1 MOV TH1, #0D8H MOV TL1, #0F0H RET EXTER0:LCALL

DELAY

JB P1.0, LOOP0 HERE0:JNB P1.0, HERE0

SETB TR0

LOOP0:RETI

EXTER1:LCALL DELAY

JB P1.1, LOOP1 HERE1:JNB P1.1, HERE1

CLR TR0

LOOP1:RETI

IPTO:CPL P1.2

MOV TH0, #9EH

MOV TL0, #58H

RETI

END

程序二(思考题)

ORG 0000H

LJMP MAIN

ORG 0003H

LJMP EXTER0

ORG 000BH

LJMP IPTO

MAIN: M OV SP, #60H

MOV TMOD, #11H

MOV IE, #83H

MOV IP, #02H

MOV TH0, #0B1H

MOV TL0, #0E0H

MOV TH1, #0D8H

MOV TL1, #0F0H

MOV R1, #02H HERE:LJMP HERE DELAY:SETB TR1

HEREY:JNB TF1, HEREY

CLR TR1

CLR TF1

MOV TH1, #0D8H

MOV TL1, #0F0H

RET

EXTER0:LCALL DELAY

JB P1.0, LOOP0 HERE0:JNB P1.0, HERE0

CPL TR0

LOOP0:RETI

IPTO: DJNZ R1, LOOP

CPL P1.2

CPL 00H

JNB 00H, LOOP2

MOV R1, #03H

LJMP LOOP

LOOP2: MOV R1, #02H

LOOP: MOV TH0, #0B1H

MOV TL0, #0E0H

RETI

END

五、实验结果

1、基本要求部分:将程序产生的十六进制代码加载到proteus中,运行仿真开始无波形输

出,按下K0键输出周期为50mS的连续方波,如图5.1所示,当按下K1键波形消失,重复操作结果一样。

2、思考题部分:将程序产生的十六进制代码加载到proteus中,运行仿真开始无波形输出,

按下K0键输出周期为100mS占空比为2:5的连续矩形波,如图5.2所示,当再次按下K0键波形消失,重复操作结果一样。

图5.1 图5.2

《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义

三、电路原理图

四、程序清单及流程图

程序一:ORG 0000H LJMP MAIN ORG 000BH LJMP INTO MAIN:LCALL DEL Y MOV SP, #60H MOV TMOD, #02H MOV IE, #82H MOV TH0, #9CH MOV TL0, #9CH MOV DPTR, #7FFFH MOV A, #81H MOVX @DPTR, A

MOV R3, #0FFH

SETB TR0 LOOP0: MOV DPTR, #7FFEH MOVX A, @DPTR SW AP A MOVX @DPTR, A LJMP LOOP0 INTO:PUSH DPL PUSH DPH PUSH ACC MOV DPTR, #7FFCH MOV A, R3 MOVX @DPTR, A CPL

A

MOV R3, A

POP ACC POP DPH POP DPL

RETI DEL Y:MOV R4, #0FFH

LOOP:NOP NOP DJNZ R4, LOOP

RET END

程序二(思考题):

ORG 0000H

LJMP MAIN

MAIN:LCALL DEL Y MOV DPTR, #7FFFH

MOVX @DPTR, A

MOV R3, #08H

MOV DPTR, #7FFEH

MOV A, #0FFH

MOVX @DPTR, A LOOP0: MOV DPTR, #7FFFH MOV A, #00H LOOP1: MOVX @DPTR, A

LCALL DEL Y

CPL ACC.0

MOVX @DPTR, A

LCALL DEL Y

CPL ACC.0

INC ACC

INC ACC

DJNZ R3, LOOP1

MOV R3, #08H

LJMP LOOP0

DELY:MOV R4,#0FFH LOOP3:MOV R5,#0FFH LOOP:NOP

NOP

NOP

NOP

NOP

DJNZ R5,LOOP

DJNZ R4,LOOP3

RET

END

单片机实验报告

院系:计算机科学学院专业:智能科学与技术年级: 2012 学号:2012213865 姓名:冉靖 指导教师:王文涛 2014年 6月1日

一. 以下是端口的各个寄存器的使用方式: 1.方向寄存器:PxDIR:Bit=1,输出模式;Bit=0,输入模式。 2.输入寄存器:PxIN,Bit=1,输入高电平;Bit=0,输入低电平。 3.输出寄存器:PxOUT,Bit=1,输出高电平;Bit=0,输出低电平。 4.上下拉电阻使能寄存器:PxREN,Bit=1,使能;Bit=0,禁用。 5.功能选择寄存器:PxSEL,Bit=0,选择为I/O端口;Bit=1,选择为外设功能。6.驱动强度寄存器:PxDS,Bit=0,低驱动强度;Bit=1,高驱动强度。 7.中断使能寄存器:PxIE,Bit=1,允许中断;Bit=0,禁止中断。 8.中断触发沿寄存器:PxIES,Bit=1,下降沿置位,Bit=0:上升沿置位。 9.中断标志寄存器:PxIFG,Bit=0:没有中断请求;Bit=1:有中断请求。 二.实验相关电路图: 1 MSP430F6638 P4 口功能框图: 主板上右下角S1~S5按键与MSP430F6638 P4.0~P4.4口连接: 2按键模块原理图: 我们需要设置两个相关的寄存器:P4OUT和P4DIR。其中P4DIR为方向寄存器,P4OUT 为数据输出寄存器。 主板上右下角LED1~LED5指示灯与MSP430F6638 P4.5~P4.7、P5.7、P8.0连接:

3 LED指示灯模块原理图: P4IN和P4OUT分别是输入数据和输出数据寄存器,PDIR为方向寄存器,P4REN 为使能寄存器: #define P4IN (PBIN_H) /* Port 4 Input */ #define P4OUT (PBOUT_H) /* Port 4 Output */ #define P4DIR(PBDIR_H) /* Port 4 Direction */ #define P4REN (PBREN_H) /* Port 4 Resistor Enable */ 三实验分析 1 编程思路: 关闭看门狗定时器后,对P4.0 的输出方式、输出模式和使能方式初始化,然后进行查询判断,最后对P4.0 的电平高低分别作处理来控制LED 灯。 程序流程图: 2 关键代码分析: #include void main(void) { WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗 P4DIR |= BIT5; // 设置4.5口为输出模式 P4OUT |= BIT0; // 选中P4.0为输出方式 P4REN |= BIT0; // P4.0使能 while (1) // Test P1.4 { if (P4IN & BIT0) //如果P4.0为1则执行,这是查询方式按下去后是低,否则为高

程序文件流程图

目录 8.2.3.4 a.质量手册编号 (2) 8.2.3.4 b.程序文件编号 (2) 8.2.3.4 d.质量记录编号 (2) 8.2附图 1:组织(及所属部门)制订、发放的文件受控流程图 (3) 8.2附图 2:外来受控文件受控流程图 (4) 8.3.2质量记录控制流程图 (5) 8.4.2内部质量审核工作流程图 (6) 8.5.2 6.10进货检验的不合格品控制程序 (7) 8.5.2 6.10产品已交付和使用时发现的不合格品控制程序 (8) 8.5.2产品最终检验的不合格品控制程序流程图 (9) 8.5.2产品实现过程中不合格品控制程序流程图 (10) 8.6.2A类纠正措施流程图 (11) 8.6.2B类纠正措施 (12) 8.6.2C类纠正措施 (13) 8.7.2《质量情况通报》的编制、发放、回收、处理 (14) 8.7.2财务状况预警系统 (15) 8.7.2预防措施的制订、实施和评价 (16) 8.8.2管理评审控制程序流程图 (17) 8.9.2人员招聘录用程序流程图 (18) 8.9.2培训程序流程图 (19) 8.9.2考核程序流程图 (20) 8.11.2产品实现过程策划程序流程图 (21) 8.11.2策划依据 (22) 8.12.2产品要求的识别与评审过程 (23) 8.12.2产品合同修改过程 (24) 8.12.2市场信息控制过程 (25) 8.13.2设计和开发控制程序 (26) 8.14.2采购控制程序流程图 (27) 8.15.2生产运作程序流程图 (28) 8.17.2测量和监控策划程序 (29) 8.18.2体系业绩的测量和监控过程程序 (30) 8.19.2过程的测量、监控和分析程序流程图 (31) 8.20.2产品测量和监控程序流程图 (32) 8.21.2持续改进过程控制程序 (33)

51单片机密码锁制作的程序和流程图

51单片码锁制作的程序和流程图(很详细) 一、基本组成: 单片机小系统+4*4矩阵键盘+1602显示+DC电机 基本电路: 键盘和和显示 键盘接P1口,液晶的电源的开、关通过P2.7口控制 电机(控制口P2.4) 二、基本功能描述: 1.验证密码、修改密码 a)锁的初始密码是123456(密码最长为10位,最短为1位)。 2.恢复初始密码 a)系统可以恢复初始密码,否则一旦忘记密码而又不能恢复初始密码,该锁就永远打不开。但是又不能让用户自行修改密码,否则其他人也可以恢复该初始密码,使得锁的安全性大大下降。

3.使系统进入低功耗状态 a)在实际使用中,锁只有在开门时才被使用。因而在大多数的时间里,应该让锁进入休眠状态、以降低功耗,这使系统进入掉电状态,可以大大降低系统功耗。 b)同时将LCD背光灯关闭 4.DC电机模拟开锁动作。 a)DC电机启动时解除开锁把手的锁定,允许通过把手开锁。DC电机不直接开锁,使得DC电机的功率不用太大,系统的组成和维护将变得简单,功耗也降了下来。 三、密码锁特点说明: 1.0 输入将被以字符形式输入,最长为10位。 超过10位时系统将自动截取前10位、但不作密码长度溢出提示。 2.0 开锁10秒后不允许更改密码、并提示修改超时_进入初始态,需要重新输入密码方可再次修改密码。 3.0 系统未使用存储器存储密码故掉电后密码自动恢复为初始密码。 4.0 若2分钟无任何操作,系统自动进入省电模式运行,同时关闭液晶显示,以节省电力。 5.0 输入密码正确后、电机允许开锁时间为5秒, 5秒后需要再次输入密码才可以再次开锁。 6.0 修改密码键和恢复初始密码键最好置于室。 这是Proteus仿真结果: 输入密码123456: 显示结果: 密码正确时电机启动、电机将持续5秒:

单片机流程图

单片机总流程图

主函数程序 #include<> #include<> #define uchar unsigned char #define uint unsigned int #define OSC_FREQ #define __10ms (65536 - OSC_FREQ/(/9970)) #define COM8255 XBYTE[0XFFF3] #define PA8255 XBYTE[0XFFF0] #define PB8255 XBYTE[0XFFF1] #define PC8255 XBYTE[0XFFF2] uchar code tab[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6}; uchar code dis_HELLO[]={0x89,0x86,0xc7,0xc7}; uchar code dis_op51[]={0xc0,0x8c,0x92,0xf9}; uchar code dis_code[]={0xcf,0xa4,0xcf,0xa4}; uchar ucCnt_10ms=99; uchar i=0; uchar J=0; uchar n=0; uchar led1; uchar led2; sbit P2_4=P2^4; sbit P3_7=P3^7; sbit P1_0=P1^0; sbit P1_1=P1^1; sbit P1_2=P1^2; void Disp_op51 (); void Disp_HELLO(); void Set_Init_Xint(); void Set_Init_Timer(); void Disp_t(); void DelayX1ms(uint count); void Disp_8255(); void main() { for(;;) { Set_Init_Xint(); Set_Init_Timer(); Disp_8255(); //ucCnt_10ms =99; //ucLed1 = 6;

51单片机实验程序

333。(x为0x2~+x39的整数)用查表方式编写y=x1 + #include void main() { 将对应的每位数字的三次方的值0~9code int a[10]={0,1,8,27,64,125,216,343,512,729};// 存入中,为程序存储器,当所存的值在或之间的话就用,charcode0~255code-128~+127而现在的值明显超过这个范围,用较合适。的范围是或。0~65535int-32768~32767int此处定义根据习惯,也可写成但是变量一定要用来int char x1,x2,x3 int y,x1,x2,x3;//y定义。 x1=2; x2=4; 三个的值是自定的,只要是当中的数值皆可,也可重复。//x1,x2,x30~9 x3=9; y=a[x1]+a[x2]+a[x3]; 单片机的程序不能停,这步就相当于无限循环的指令,循环的内容为空白。// while(1);} 结果的查询在软件内部,在仿真界面点击右下角(一般初始位置是右下角)的Keilvision//的框架内双击“”文字输入后按回车,右侧会显示其进16watchdouble-click or F2 to addy制数值如,鼠标右键该十六进制,选择第一行的可查看对应的进制数。0x3410decimal, 1、有10个8位二进制数据,要求对这些数据进行奇偶校验,凡是满足偶校验的数据(1的个数为偶数)都要存到内RAM50H开始的数据区中。试编写有关程序。 #include void main() { 将所要处理的值存入中,这些可以根据RAM int a[10]={0,1,5,20,24,54,64,88,101,105};// 个人随意设定,但建议不要超过的范围。0~255定义一个变量//char i; 定义一个指针指向内部这个地址。*q char *q=0x50; //0x50 循环,共十次,也可以用for(i=0;i<10;i++) for(i=9;i>=0;i--)//9~0 { 将的值赋给累加器ACC a[i]ACC=a[i];// 位上的奇偶校验位,如果累加器内数值的个数为偶数那么1//PSW0ACC if (P==0)为,若为奇数,为。这里的是大写的。0PPP1{ *q=a[i]; 每赋一个值,指针挪一个位置指向下一个。q++;// } } 同实验一,程序不能停。// while(1);} 3.有10个8位带符号二进制数,请将10个数按从小到大的顺序排列,并存到内RAM50H开始的单元中。 #include void main() { 将所有值存入中,因为有负RAM;// char data a[10]={-50,-36,0,-128,1,99,127,89,-89,40}

51单片机密码锁制作的程序和流程图

51单片机密码锁制作的程序和流程图(很详细) 一、基本组成: 单片机小系统+4*4矩阵键盘+1602显示+DC电机 基本电路: 键盘和和显示 键盘接P1口,液晶的电源的开、关通过P2.7口控制 电机(控制口P2.4) 二、基本功能描述: 1.验证密码、修改密码 a)锁的初始密码是123456(密码最长为10位,最短为1位)。 2.恢复初始密码 a)系统可以恢复初始密码,否则一旦忘记密码而又不能恢复初始密码,该锁就永远打不开。但是又不能让用户自行修改密码,否则其他人也可以恢复该初始密码,使得锁的安全性大大下降。

3.使系统进入低功耗状态 a)在实际使用中,锁只有在开门时才被使用。因而在大多数的时间里,应该让锁进入休眠状态、以降低功耗,这使系统进入掉电状态,可以大大降低系统功耗。 b)同时将LCD背光灯关闭 4.DC电机模拟开锁动作。 a)DC电机启动时解除开锁把手的锁定,允许通过把手开锁。DC电机不直接开锁,使得DC电机的功率不用太大,系统的组成和维护将变得简单,功耗也降了下来。 三、密码锁特点说明: 1.0 输入将被以字符形式输入,最长为10位。 超过10位时系统将自动截取前10位、但不作密码长度溢出提示。 2.0 开锁10秒后不允许更改密码、并提示修改超时_进入初始态,需要重新输入密码方可再次修改密码。 3.0 系统未使用存储器存储密码故掉电后密码自动恢复为初始密码。 4.0 若2分钟内无任何操作,系统自动进入省电模式运行,同时关闭液晶显示,以节省电力。 5.0 输入密码正确后、电机允许开锁时间为5秒, 5秒后需要再次输入密码才可以再次开锁。 6.0 修改密码键和恢复初始密码键最好置于室内。 这是Proteus仿真结果: 输入密码123456: 显示结果: 密码正确时电机启动、电机将持续5秒:

程序流程图编写规范_(终极整理版)

程序流程图规范 1.引言 国际通用的流程图形态和程序: 开始(六角菱型)、过程(四方型)、决策(菱型)、终止(椭圆型)。在作管理业务流程图时,国际通用的形态:方框是流程的描述;菱形是检查、审批、审核(一般要有回路的);椭圆一般用作一个流程的终结;小圆是表示按顺序数据的流程;竖文件框式的一般是表示原定的程序;两边文件框式的一般是表示留下来的资料数据的存储。 2.符号用法 程序流程图用于描述程序内部各种问题的解决方法、思路或算法。 图1-1 标准程序流程图符号 1)数据:平行四边形表示数据,其中可注明数据名、来源、用途或其 它的文字说明。此符号并不限定数据的媒体。 2)处理:矩形表示各种处理功能。例如,执行一个或一组特定的操作,

从而使信息的值,信息形式或所在位置发生变化,或是确定对某一流向的选择。矩形内可注明处理名或其简要功能。 3)特定处理:带有双纵边线的矩形表示已命名的特定处理。该处理为 在另外地方已得到详细说明的一个操作或一组操作,便如子例行程序,模块。矩形内可注明特定处理名或其简要功能。 4)准备:六边形符号表示准备。它表示修改一条指令或一组指令以影 响随后的活动。例如,设置开关,修改变址寄存器,初始化例行程序。 5)判断:菱形表示判断或开关。菱形内可注明判断的条件。它只有一 个入口,但可以有若干个可供选择的出口,在对符号内定义各条件求值后,有一个且仅有一个出口被激活,求值结果可在表示出口路径的流线附近写出。 6)循环界限:循环界限为去上角矩形或去下角矩形,分别表示循环的 开始和循环的结束。一对符号内应注明同一循环标识符。可根据检验终止循环条件在循环的开始还是在循环的末尾,将其条件分别在上界限符内注明(如:当A>B)或在下界限符内注明(如:直到C

北京交通大学单片机实验程序报告

单片机实验程序

实验二8155并行I/O口扩展和动态扫描程序编制 1.实验目的 (1)掌握8155并行I/O芯片扩展和使用方法 (2)掌握数码管动态扫描汇编语言的编制方法 2.预习要点 (1)8155芯片基础知识 (2)51单片机的总线时序、地址译码的原理 (3)数码管动态扫描显示方法 3.实验设备 计算机、单片机实验箱。 4.实验内容 基本要求: 通过实验板的上的8155(U16)显示电路(在电路板上已经固定连接字形和字位控制线的8155部分),并通过跳线确定8155的地址,在8个LED数码管上依次动态显示数字1~8。 扩展要求: 假定30H~33H的存储单元内容为4个字节16进制数,请依序将他们显示在8个LED数码管上 根据程序要求做如下程序流程图: 主程序流程图:

显示子程序流程框图: 基本要求编程如下: ORG 0000H

AJMP MAIN ORG 0050H MAIN: MOV SP,#60H ;压栈 MOV DPTR, #4100H MOV A,#0FH ;方式控制字0FH送A MOVX @DPTR, A ;8155初始化 MOV 70H,#01H ;设置显示缓冲区 MOV 71H,#02H MOV 72H,#03H MOV 73H,#04H MOV 74H,#05H MOV 75H,#06H MOV 76H,#07H MOV 77H,#08H LOOP: ACALL DISPLAY ;循环调用显示子程序AJMP LOOP DISPLAY: MOV R0,#70H ;显示缓冲区首地址送R0 MOV R3,#0FEH ;字位控制初值送R3

单片机实验一

软件实验部分 实验一 Keil uVision2 开发环境入门 一、实验目的 1、初步熟悉Keil uVision2开发环境的使用; 2、了解C51语言程序设计和调试方法。 二、实验内容 1、应用给定程序联系使用Keil uVision2软件 2、对指定数据块赋值 三、实验流程图 1、输入以下程序: 全速运行实验程序,观察相关单元中数据的变化和单步运行的方法 2、对指定数据块赋值 (1)对指定单元进行清零操作 (2)对外部RAM中2000H开始的单元进行赋值,赋值数据为0~16.并对相关单元进行观察。 四、实验步骤 (一)存储块清零 1、打开Keil uVision2开发环境; 2、新建一个文件:File→New; 3、根据清零实验要求输入代码如下: xdata unsigned char Buffer[256] _at_ 0x3000; void main() {

unsigned int index; unsigned char xdata * ptr; ptr = &Buffer; // 起始地址 for (index = 0; index <= 255; index++) { *ptr++ = 0; // 清0, 地址加一 } } 4、保存文件名为“Text1.c”并为其建一个工程; Project→New Project→AT89s51→确定→右键Source Group 1→Add Files to Group ” Source Group 1”→将“Text1.c”选中加入工程即可。 5、编译→改错→直到编译通过没有错误; 6、仿真程序:按钮→按钮→屏幕下方会出现Address工具栏→Address栏中输入 如右图→通过改变表中地址对应的内容,这 三个按钮运行程序,查看内容是否被清零。 (二)对指定数据块赋值 1、建立工程和新建文件同(一)中类似 2、自己编程 仿真结果如下图:(仿真步骤与(一)类似)

程序流程图

程序流程图 编写马磊编写时间2011-07-04 审批审批者姓名(及其职务)审批时间 版本V0.9

1概述 利用计算机进行程序设计时,不仅仅只处理一些简单的数据,在大部分的程序设计里处理的问题还是相当复杂的。对于那些复杂的程序设计,读者不可能直接就能写出程序的源代码,而是要通过一些具体的设计方法(如用程序流程图)把程序设计思想先写出来,然后根据程序流程图编写代码。本章将具体介绍进行程序设计时使用的基本方法和C程序的流程控制。 2程序设计的基本知识 2.1程序流程图 在描述一个程序的基本结构思想时有很多种方法,其中程序流程图是最常用也是最基本的方法。 2.1.1传统程序流程图 传统流程图表示法的特点是用一些图框表示各种类型的操作,用线表示这些操作的执行顺序。美国国家标准化协会ANSI规定了一些常用的流程图符号,现已为世界各国普遍采用。我国也有自己的国家标准GB 1526-89与该标准基本相同,本书就参照ANSI标准做具体介绍。标准中各种图示如图3.1所示。 起止框输入输出框判断框处理框

或 流程线连接点注释框 图 3.1 传统流程图表示法 下面对其中一些主要符号作简要说明: (1)起止框是用来标识程序的开始和结束位置的。规定流程图以起止框开始,以起止框结束。 (2)输入输出框也叫数据框,其中可以注明数据名称、来源、用途或其它的文字说明。 (3)菱形框的作用是对一个给定的条件进行判断,根据给定的条件是否成立来决定如何执行其后的操作。 (4)处理框用矩形表示各种处理功能。例如,执行一个或一组特定的操作,从而使信息的值、信息的形式或所在位置发生变化。另外在矩形框内可注明特定处理名称或其简要功能。 (5)流程线用带箭头的直线表示程序的执行顺序。当流程自左向右或自上向下时流程线可以不带箭头,其它情况应加箭头表示流程。 (6)连接点用小圆圈表示将画在不同地方的流程线连接起来。下图中有两个以①为标志的连接点,它表示这两个点是互联在一起的,实际它们是同一个点。这种连接通常用在图形画不下而需要分开画时。

单片机实验答案

前言 由于单片机具有高可靠性、超小型、低价格、容易产品化等特点,在仪器仪表智能化、实时工业控制、实时数据采集、智能终端、通信设备、导航系统、家用电器等控制应用领域,具有十分广泛的用途。目前在国内单片机应用中,MCS-51系列单片机仍然是一种主流单片机。为配合《单片机应用技术》课程的教学,使学生尽快了解、掌握89C51单片机的使用,特编写了这本上机指导书(基础篇)。 《单片机》是一门实践性很强的课程,提高教学质量的一个重要环节是上机实习和训练,无论是学习汇编语言程序设计,还是学习接口电路和外设与计算机的连接,或者软硬兼施地研制单片机应用系统,不通过加强动手是不能获得预期效果的。本实验指导书提供了9个实验的指导性材料,实验还有一些思考题,可以根据课时的安排和教学要求进行取舍。为了达到某些实验的目的,书中提供的参考程序与实际应用中的程序会有些差别,所以不一定是最优的。 由于时间紧迫,加上编者学识有限,如有不妥之处,欢迎读者批评指正。 编者

实验须知 1. 实验前必须阅读教科书的有关部分和本实验指导书,了解实验目的、内容、步骤,做好实验前的准备工作,编写好实验中要求自编或修改的程序;完成实验前要求完成的准备工作后方可以上机实验,否则不得上机操作。 2. 各种电源的电压和极性不能接错,严禁带电接线和接插元器件。通电前须经过指导教师检查认可后方能通电。 3. 不准随意拨弄各种与实验无关的旋钮和开关,凡与本次实验无关的任何设备都禁止动用和摸弄,注意安全。 4. 严禁用手触摸实验系统印制电路板和元器件的引脚,防止静电击穿芯片。 5. 实验中若损坏仪器或元器件,应及时向指导教师报告,听候处理。 6. 在实验室内保持安静和卫生,不得随意走动和喧哗,集中精力完成实验。 7. 实验完成后,关掉电源,及时整理实验台桌面,保持环境整洁。 8. 按规定认真完成实验报告,对实验中出现的现象进行分析,在规定的时间内交上实验报告。 9. 凡实验或实验报告未能按规定完成的学生,不能参加本课程的考试或考查。

源程序清单流程图(1)

1、程序说明 输入两个8位数据A和B,求|A-B|,结果放在内存中,并输出结果。 2、调试说明 ①在进行循环程序设计时,要注意循环初始化、内外层循环的控制、循环结束条件等的设置对整个程序的执行逻辑要非常清楚。这样可以避免死循环等意外情况的出现。 ②分支程序的控制很重要,编写代码时,要注意注释重要的分支控制部分。这样思路才不会乱。同时要对照流程图,随时观察代码的逻辑思路是否正确。 3、源程序清单和流程图,附执行结果截图。 源程序清单 DA TA SEGMENT DB 'X:$','H',0AH,0DH,'Y:$','H',0AH,0DH,'|X-Y|:$' X DB 0 Y DB 0 Z DB 0 DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA START: MOV AX,DA TA MOV DS,AX MOV DX,0 MOV AH,09H INT 21H CALL INPUT MOV X,BL ADD DX,3 MOV AH,09H INT 21H CALL INPUT MOV Y,BL MOV AL,X MOV BL,Y SUB AL,BL MOV Z,AL JC _OUT JMP NEXT _OUT: SUB BL,X MOV Z,BL NEXT: ADD DX,6 MOV AH,09H INT 21H MOV CH,02H LOP: MOV BL,Z CMP CH,02H JB LOP1 ACII码转化为数据 ACII码转化为数据 X-Y>0? Z=Y-X Z=X-Y 数据转化为ACII码 输出Z 结束 存入Y 存入X 开始 否 是 调用子程序 调用子程序 返回 返回 主程序流程图

单片机实验程序

一 #include #include #define uchar unsigned char sbit H1=P3^6; sbit H2=P3^7; sbit L1=P0^5; sbit L2=P0^6; sbit L3=P0^7; tab1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff}; tab2[]={0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3b,0x37,0x2f,0x1f}; tab3[]={0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; tab4[]={0x1f,0x2f,0x37,0x3b,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f,0x3f}; void Delay1s() //@11.0592MHz { unsigned char i,j,k; for(i=10;i>0;i--) for(j=200;j>0;j--) for(k=250;k>0;k--) } void delay20ms() { unsigned char i,j; for(i=100;i>0;i--) for(j=60;j>0;j--); } void flick() { uchar d; while(d<=2) { P2=0x00; P3=0xc3; Delay1s(); P2=0xff; P3=0xff; Delay1s(); d++; } } void main() { uchar b,y,n; flick();

微机原理与单片机实验报告

北京联合大学信息学院实验报告 课程名称:微型计算机原理学号: 姓名: 2012 年 6 月 9 日

目录 实验1 EMU8086模拟器的使用 (3) 实验2 数据传送指令的使用 (5) 实验3 多位十六进制加法运算实验 (9) 实验5 循环程序实验 (11) 实验6 由1 到100 求和实验 (13) 实验7 求表中正数_负数_0 的个数实验 (14) 实验8 数据排列实验(冒泡排序) (16) 实验9 系统功能调用(大小写转换) (18) 实验10 阶乘(递归运算) (20) 实验11 ProteusIO工程文件的建立 (21) 实验12 IO口读写实验(245、373) (22) 实验13 8255 接口实验 (24) 实验14 声光报警 (25) 实验总结 (28)

实验1 EMU8086模拟器的使用 一实验要求 利用EMU8086模拟器环境,完成创建源程序文件,运行调试,实验结果的查看二实验目的: 熟悉EMU8086实验环境 三EMU8086环境: 1 模拟器编辑窗口 2 模拟器调试窗口

四实验内容 实验内容1:新建文件。 运行emu8086 1. 新建文件:单击“新建”按钮,选择COM模板,在模拟器编辑窗口中输入如下程序代码: MOV AX, 1020H MOV BX, 2030H MOV AX, BX ADD AX, BX MOV [BX], AX MOV [2032H], AX HLT 2. 编译:单击“编译”按钮,对程序段进行编译; 3. 保存:编译通过,单击“完成”按钮,将其以文件名“EXP1”保存在本地磁盘上。 4. 仿真:单击“仿真”按钮,打开模拟器调试窗口和源文件窗口。 5.在模拟器调试窗口中的寄存器组区,查看数据寄存器AX,BX,CX,DX;段寄存器CS,ES,SS,DS;指令指针寄存器IP;指针寄存器SP,BP;变址寄存器SI,DI;标志寄存器的值。 6.单击“单步前”按钮,单步执行程序,并观察每次单步执行后,相关寄存器值的变化。 7.单击“重载”按钮,将程序重载,并调整指令运行步进时延为400毫秒,单击“全速”按钮,运行程序, 8.程序运行之后,在程序调试窗口中,选择[view]/[memory],查看模拟器环境中,内存单元0700:0100开始的连续10个单元的内容 9.将“存储器”中的地址改为0700:2030,查看开始的四个字节的内容,并思考其内容与程序

程序文件流程图

目录 8.2.3.4 a. 质量手册编号 (3) 8.2.3.4 b. 程序文件编号 (3) 8.2.3.4 d. 质量记录编号 (3) 8.2 附图1:组织(及所属部门)制订、发放的文件受控流程图 (4) 8.2 附图2:外来受控文件受控流程图 (5) 8.3.2 质量记录控制流程图 (6) 8.4.2 内部质量审核工作流程图 (7) 8.5.2 6.10 进货检验的不合格品控制程序 (8) 8.5.2 6.10 产品已交付和使用时发现的不合格品控制程序 (9) 8.5.2 产品最终检验的不合格品控制程序流程图 (11) 8.5.2 产品实现过程中不合格品控制程序流程图 (12) 8.6.2 A 类纠正措施流程图 (13) 8.6.2 B 类纠正措施 (15) 8.6.2 C 类纠正措施 (16) 8.7.2 《质量情况通报》的编制、发放、回收、处理 (17) 8.7.2 财务状况预警系统 (18) 8.7.2 预防措施的制订、实施和评价 (19) 8.8.2 管理评审控制程序流程图 (20) 8.9.2 人员招聘录用程序流程图 (21)

8.9.2 培训程序流程图 (22) 8.9.2 考核程序流程图 (23) 8.11.2 产品实现过程策划程序流程图 (24) 8.11.2 策划依据 (25) 8.12.2 产品要求的识别与评审过程 (27) 8.12.2 产品合同修改过程 (28) 8.12.2 市场信息控制过程 (29) 8.13.2 设计和开发控制程序 (30) 8.14.2 采购控制程序流程图 (32) 8.15.2 生产运作程序流程图 (33) 8.17.2 测量和监控策划程序 (34) 8.18.2 体系业绩的测量和监控过程程序 (35) 8.19.2 过程的测量、监控和分析程序流程图 (36) 8.20.2 产品测量和监控程序流程图 (37) 8.21.2 持续改进过程控制程序 (38)

单片机实验模版

单片机实验模版 本科实验报告 课程名称:单片机综合设计学院(系): 专业:电子 班级: 学号: 学生姓名: 2018 年月日

实验项目列表 注意:独立完成预习报告和实验操作。 专业:班级:学号: 学生签字: 联系:

《单片机原理及应用实验》报告填写要求依照《大连理工大学本科实验报告规范(试行)》提出的各项要求,现规定《单片机原理及应用实验》报告填写要求如下: 一、每次实验前必须完成预习报告。注意:预习报告中的回答问题必须手写,且由 学生本人签名。第一次实验时,课前将预习报告与《实验项目列表》一同交给 实验老师。每次实验时,课前提交预习报告,没有完成预习报告者不得进行实 验。 二、每一个实验项目均须撰写一份实验报告,最后按顺序装订、上交。 三、实验报告内容: 1、实验目的和要求:写明实验的目的和任务要求; 2、实验原理和内容:与实验内容相关的算法描述、程序的结构类型,与实验相关的 接口模块功能描述。 3、算法流程:使用流程图对算法进行描述。流程图应当逻辑正确、简单清晰。流程 图能够采纳打印或手工绘制。 4、使用protel等工具绘制实验系统电路图(也可手工绘制)。系统电路图应正确、 工整。系统电路中应包含单片机以及单片机工作时所必需的外围相关器件(晶 体、上电复位电路等); 5、程序清单:程序清单一律采纳打印的方式,源程序文件的格式要整齐、规范(语 句的标号、指令及注释应在不同列中)。在程序的关键语句上加注释。相关子程 序要在凝视中进行功能说明; 6、实验结果与分析:明确地写出最后结果(是否实现设计要求等),对实验中所遇 到的问题以及解决的方法加以描述; 7、实验体会、建议:通过实验所体会的收成。针对实验内容、教学方法、考核方法 等提出需要解决的问题,提出改进建议; 8、全部文字叙述内容要求简明扼要,思路清晰、用词规范; 9、要紧仪器设备:记录要紧仪器的名称、型号(包括实验运行软件名称)等 10、实验时刻:报告中应标明实验的日期(年、月、日;星期;组号)。 四、要求实验报告字迹工整,文字简练,数据齐全,图表规范,运算正确,分析充分、具体、定量。

电梯控制程序源代码(带流程图-功能分解、源代码)

《综合电子创新训练》研究报告研究题目:CTS1600-1控制技术综合试验 院系名称: 专业名称: 学生姓名: 指导教师: xxxx年 xx月 xx日 xxxxxxxxxx

目录 第一章绪论 (1) 1.1课题背景与目的 (1) 1.2课题研究方法 (1) 第二章电梯模型硬件设备 (2) 2.1 实验单片机模型与接口定义 (2) 2.1.1 实验用单片机 (2) 2.1.2 单片机接口定义 (3) 2.1.3 I/O接口DATA控制命令表 (4) 2.2 电梯控制命令说明 (6) 2.3 实验用电梯模型 (8) 第三章与电梯模型相关的实验程序 (10) 3.1数码管连续显示 (10) 3.1.1 程序流程图 (10) 3.1.2 功能简介 (10) 3.1.3 功能实现过程 (11) 3.1.4 问题的解决及收获 (11) 3.2 外部按键灯连续闪烁 (12) 3.2.1 程序流程图 (12) 3.2.2 功能简介 (12) 3.2.3 功能实现过程 (12) 3.2.4 问题的解决及收获 (13) 3.3 键、灯、数码管 (14)

3.3.2 功能简介 (14) 3.3.3 功能实现过程 (14) 3.3.4 问题的解决及收获 (15) 3.4 外部按键上下行 (16) 3.4.1 程序流程图 (16) 3.4.2 功能简介 (16) 3.4.3 功能实现过程 (17) 3.4.4 问题的解决及收获 (18) 3.5 计算器 (19) 3.5.1 程序流程图 (19) 3.5.2 功能简介 (21) 3.5.3 功能实现过程 (21) 3.5.4 问题的解决及收获 (22) 3.6 密码锁 (23) 3.6.1程序流程图 (23) 3.6.2功能简介 (23) 3.6.3实现功能过程 (24) 3.6.4问题的解决及收获 (24) 3.7逐层停自动开关门循环 (25) 3.7.1程序流程图 (25) 3.7.2功能简介 (27) 3.7.3实现功能过程 (27) 3.7.4问题的解决及收获 (27) 3.8 可记录顺序逐层停自动开关门 (28)

单片机中断实验报告

人的一生要疯狂一次,无论是为一个人,一段情,一段旅途,或一个梦想 ------- 屠呦呦 实验三定时器中断实验 一、实验目的 1、掌握51单片机定时器基本知识; 2、掌握定时器的基本编程方法; 3、学会使用定时器中断。 二、实验内容 1、利用定时器设计一个秒表,计数范围为0—59,并在数码管实时显示。 三、实验设备 PC 机一台、单片机实验箱 主要器件:AT89C52、7SEG-BCD、 四、实验步骤 1、使用Proteus设计仿真原理图; 2、使用Keil设计程序; 3、联合调试仿真。 五、实验流程图 六、实验程序与结果 #include #define uint unsigned int #define uchar unsigned char sbit F=P2^1;

void timer1_init() { TMOD=0x10;//将定时器1设置为工作方式1 TH1=(65536-6000)/256;//定时器每加一时间为1/fsoc,定时时间为1/500 //(1/500)s/(1/3000000)s=6000 TL1=(65536-6000)%256;//fsoc=3000000,所以装入16位定时器中值为65536-6000 EA=1; ET1=1; TR1=1; } void main() { timer1_init(); while(1); } void timer1() interrupt 3 { TH1=(65536-6000)/256;//每次进入中断,重装初值TL1=(65536-6000)%256; F=~F;//每次进入中断P1.1口取反 } #include #define uint unsigned int #define uchar unsigned char sbit F=P2^1; void timer0_init() {TMOD=0x01;//将定时器0设置为工作方式1 TH0=(65536-83)/256;//定时器每加一时间为1/fsoc,定时时间为2Khz,既500us //500us/6us=83.3333 TL0=(65536-83)%256;//fsoc=6000000,所以装入16位定时器中值为65536-83 EA=1; ET0=1; TR0=1; }void main() { timer0_init(); while(1); } void timer0() interrupt 1 { TH0=(65536-83)/256;//每次进入中断,重装初值 TL0=(65536-83)%256; F=~F;//每次进入中断P1.1口取反,表示定时时间到 } #include // 包含51单片机寄存器定义的头文件 #define seg_data P1 #define seg_data2 P3 #define uint unsigned int sbit D1=P2^0; //将D1位定义为P2.0引脚 uint counter=0; unsigned int unit=0,decade=0,avs=0;//time=0;

用单片机控制交通灯源程序代码及流程图

用单片机控制交通灯 传统的交通灯控制电路一般由数字电路构成,电路复杂、体积大、成本高。采用单片机控制交通灯不但可以解决上述问题,而且还具有时间显示功能,非常方便。下面介绍一种用单片机控制交通灯的方法。 一、硬件硬件电路如附图。AT89C2051的P1.7~P1.5和P1.3~P1.1直接驱动红、黄、绿灯,利用单片机的串口和二片74LS164串/并转换移位寄存器实现时间显示,七段数码管为共阴管,硬件电路极为简单。 二、软件交通灯有红、黄、绿三种。红灯亮,停止通行;绿灯亮,允许通行;黄灯亮,作过渡。红灯亮60秒,绿灯亮55秒,黄灯亮5秒。每组灯的亮暗状态以2分钟为周期循环,故程序采用主、子程序方式,循环结构。另外,为了简化电路,红、黄、绿灯采用低电平点亮。 源程序清单如下: ORG0000H START:MOVDRTR,#TAB MOVSCON,#00H MOVP1,#6CH;点亮红、绿灯 MOVR0,#0;R0清零 LEFT:INCR0 CJNER0,#55,LP0;R0<55,转LP0 MOVP1,#6AH;R0=55,点亮红、黄灯 LJMPLP1 LP0:CJNER0,#60,LP1;R0<60,转LP1 MOVP1,#0C6H;R0=60,点亮绿、红灯 LJMPRIGHT LP1:LCALLDBDB LCALLDISP LJMPLEFT;20H为1,转LEFT RIGHT:DECR0 CJNER0,#5,LP2;R0>0,转LP2 MOVP1,#0A6H;R0=5,点亮黄、红灯 LJMPLP3 LP2:CJNER0,#0,LP3 MOVP1,#6CH;R0=0,点亮红、绿灯 LJMPLEFT LP3:LCALLDBDB

单片机试验源程序文件

单片机实验指导书(实验源程序)

实验二、三 I/O接口实验 1、输出实验 例1: ORG 0000H AJMP START ;跳转到初始化程序 ORG 0033H ;----- 主程序开始 ----- START: MOV P1,#0FFH ;是所有LED熄灭 ACALL DELAY ;调用延时子程序 CLR P1.0 ;P1.0输出低电平,使LED3点亮 ACALL DELAY ;调用延时子程序 SETB P1.0 ;P1.0输出高电平,使LED3熄灭 CLR P1.1 ;P1.1输出低电平,使LED4点亮 ACALL DELAY ;调用延时子程序 SETB P1.1 ;P1.1输出高电平,使LED4熄灭 CLR P1.2 ;P1.2输出低电平,使LED5点亮 ACALL DELAY ;调用延时子程序 SETB P1.2 ;P1.2输出高电平,使LED5熄灭 CLR P1.3 ;P1.3输出低电平,使LED6点亮 ACALL DELAY ;调用延时子程序 MOV P1, #0F0H ;LED3~LED6全部发光 ACALL DELAY ;调用延时子程序 AJMP START ;返回到标号START处再循环 ;----- 延时子程序 ----- DELAY: MOV R5,#10 LOOP: MOV R6,#200 LOOP1: MOV R7,#250 LOOP2: DJNZ R7,LOOP2 DJNZ R6,LOOP1 DJNZ R5,LOOP RET 例2: ORG 0000H AJMP START ;跳转到初始化程序 ORG 0033H ;----- 主程序开始 ----- START: MOV P1,#0FFH ;是所有LED熄灭 ACALL DELAY ;调用延时子程序 MOV ACC,#0FEH ;ACC中先装入LED3亮的数据(二进制的11111110) MOV P1,ACC ;将ACC的数据送P1口 ACALL DELAY ;调用延时子程序 MOV R0,#03H ;上句送到P1口的数据就点亮了LED1,所以将数据再移

八皇后源代码及流程图

目录 一需求分析 (1) 1.1程序的功能: (1) 1.2程序的输入输出要求: (1) 二概要设计 (3) 2.1程序的主要模块: (3) 2.2程序涉及: (3) 三详细设计 (3) 3.1相关代码及算法 (4) 3.1.1 定义相关的数据类型如下:...................... 错误!未定义书签。 3.1.2 主模块类C码算法: (4) 3.1.3 画棋盘模块类C码算法 (5) 3.1.4 画皇后模块类C码算法: (5) 3.1.5 八皇后摆法模块(递归法): (6) 3.1.6 初始化模块 (7) 3.1.7 输出摆放好的八皇后图形(动态演示): (7) 3.2相关流程图 (9) 四调试分析 (12) 五设计体会 (13) 六附录 (13) 七参考文献 (17)

一需求分析 1.1 程序功能: 八皇后问题是一个古老而著名的问题。该问题是十九世纪著名的数学家高斯1850年提出的。八皇后问题要求在一个8*8的棋盘上放上8个皇后,使得每一个皇后既攻击不到另外七个皇后,也不被另外七个皇后所攻击.按照国际象棋的规则,一个皇后可以攻击与之处在同一行或同一列或同一斜线上的其他任何棋子,问有多少种不同的摆法?并找出所有的摆法。因此,八皇后问题等于要求八个皇后中的任意两个不能被放在同一行或同一列或同一斜线上。本程序通过对子函数void qu(int i)的调用,将八皇后的问题关键通过数据结构的思想予以了实现。虽然题目以及演算看起来都比较复杂,繁琐,但在实际中,只要当一只皇后放入棋盘后,在横与列、斜线上没有另外一只皇后与其冲突,再对皇后的定位进行相关的判断。即可完成。如果在这个程序中,我们运用的是非递归的思想,那么将大量使用if等语句,并通过不断的判断,去推出答案,而且这种非递归的思想,大大的增加了程序的时间复杂度。如果我们使用了数据结构中的算法后,那么程序的时间复杂度,以及相关的代码简化都能取得不错的改进。这个程序,我运用到了数据结构中的栈、数组,以及树和回溯的方法。特别是在对于树以及二叉树的学习,更是为八皇后的问题提供了科学的解决方案,通过对树的分析,把八皇后的问题看成了树,而在衍生第一个变化后,上面的第一层八个变化就变成了八个结点,而这八个结点再继续的衍生……,这样比较形象的将八皇后的问题简单化了。然后再通过回溯法进行设计,回溯法是设计递归过程的一个重要的方法。它的求解过程实质上是一个先序遍历一棵“状态树“的过程。在这个程序设计中,它先进行判断,棋盘上是否已经得到一个完整的布局(即棋盘是否已经摆上8个棋子),如果是,则输出布局;如果不是则依次先根遍历满足约束条件的各棵子树,流程即是: 判断该子树根的布局是否合法:如果合法的话,则先根遍历该子树;如果不合法的话,则剪去该子树的分支。 1.2 程序的输入输出要求: 用TC软件进行编译以及调试,调试正确之后,运行结果如下图:

相关文档
最新文档