文档库 最新最全的文档下载
当前位置:文档库 › 8253、8255A、8259A初始化程序

8253、8255A、8259A初始化程序

8253、8255A、8259A初始化程序
8253、8255A、8259A初始化程序

8253的初始化程序

1.确定端口地址:0310H、0312H、0314H、0316H

2.确定工作方式(假设工作方式为):

通道0,方式3

通道1,方式1

通道2,方式5

3.确定计数值:

通道0:N0=1MHz/2KHz=500

通道1:N1=480us/(1/1mhz)=480

通道2:N2=26

4确定控制字:

通道0:00110111B

通道1:01110011B

通道2:10011011B

对3个通道的初始化程序如下:

;通道0初始化程序

MOV DX, 316H

MOV AL,00110111B

OUT DX,AL

MOV DX,310H

MOV AL,00H

OUT DX, AL

MOV AL,05H

OUT DX,AL

;通道1的初始化程序MOV DX, 316H MOV AL, 001110011B OUT DX, AL

MOV DX, 312H MOV AL, 80H

OUT DX, AL

MOV AL, 04H

OUT DX, AL

;通道2初始化程序MOV DX, 316H MOV AL, 10011011B OUT DX, AL

MOV DX, 314H MOV AL,26H

OUT DX,AL

; MOV AL,00H

; OUT DX,AL

8255A初始化程序

对8255A进行初始化,要求端口A工作于方式1,输入;端口B工作于方式0,输出;端口C的高4位配合端口A工作,低4位为输入。

1.确定控制字端口地址:006CH。

2.确定工作方式:

端口A,工作方式1,输入

端口B,工作方式0,输出

端口C,C0为输入,C4为配合工作

3.确定方式选择控制字:1 011 100 1H(B9H)

对3个端口的初始化程序如下

MOV AL,B9H

MOV DX,006CH

OUT DX,AL

另一个8255A初始化程序

已知某8255A在系统中占用88~8BH号端口地址,现欲安排其PA,PB,PC口全部为输出,PA,PB口均工作于方式0模式,并将PC6置位,使PC3复位,试编写出相应的初始化程序:

1.确定端口地址

控制字以及PC口置位复位端口,8BH

2.确定工作方式

3.确定方式选择控制字

MOV AL,80H

OUT 8BH,AL

MOV AL,ODH

OUT 8BH,AL

MOV AL,06H

OUT 8BH,AL

在8259A内部有两组寄存器:

一组为命令寄存器,用于存放CPU写入的初始化命令字ICW1~ICW4(initialization command words);

另一组为操作命令寄存器,用于存放CPU写入的操作命令字OCW1~OCW3(operation command words)。

1.初始化命令字ICW的格式

当地址线A0为1时,8259A提供了4个(ICW1~ICW4)初始化命令字,并规定了严格的初始化步骤。

8259A是中断系统的核心器件,对它的初始化编程要涉及中断系统的软、硬件的许多问题,而且一旦完成初始化,所有硬件中断源和中断处理程序都必须受其制约。

(1)ICW1的格式

ICW1的格式如图6.12所示。

图6.12 ICW1的格式

IC4 (ICW4 needed /no ICW4 needed):指示在初始化时是否需要写入命令字ICW4。在80x86 CPU系统中需要定义ICW4,设IC4=1。

SNGL(single/cascade mode):指示8259A在系统中使用单片还是多片级联。SNGL =1为单片,SNGL=0为多片级联。

ADI(call address interval):设置调用时间间隔,在80486 CPU中无效。

LTIM(level/edge triggered mode):定义IRi的中断请求触发方式。LTIM=1为电平触发,LTIM=0为边沿触发。

D4:ICW1的标志位,恒为1。

D5~D7:未用,通常设置为0。

(2)ICW2的格式

ICW2用于设置中断类型号,格式如图6.13所示。

图6.13 ICW2的格式

ICW2中的低3位ID2~ID0由中断请求输入端IRi(i=0~7)的编码自动引入,高5位T7~T3由用户编程写入。若ICW2写入40H时,则IR0~IR7对应的中断类型号为40H~47H。(3)ICW3的格式

ICW3是级联命令字,在级联方式下才需要写入。主片和从片所对应的ICW3的格式不同,主片ICW3的格式如图6.14所示,从片ICW3的格式如图6.15所示。

图6.14 主片ICW3的格式

图6.15 从片ICW3的格式

S7~S0与IR7~IR0相对应,若主片IRi(i=0~7)引脚上连接从片,则Si=1,否则Si=0。

ID2~ID0是从片接到主片IRi上的标识码。例如,当从片的中断请求信号INT与主片的IR2连接时,ID2~ID0应设置为010,D7~D3未用,通常设置为0。

在中断响应时,主片通过级联信号线CAS2~CAS0送出被允许中断的从片的标识码,各从片用自己的ICW3和CAS2~CAS0进行比较,二者一致的从片被确定为当前中断源,可以发送该从片的中断类型码。

(4)ICW4的格式

ICW4用于设定8259A的工作方式,其格式如图6.16所示.

图6.16 ICW4的格式

mP(microprocessor):设置CPU模式。mP=1为80x86模式,mP=0为8080/8085模式。

AEOI(auto end of interrupt):设置8259A的中断结束方式。AEOI=1为自动结束方式,AEOI=0为非自动结束方式。

(master/slave):选择缓冲级联方式下的主片与从片。=1为主片,

=0为从片。

BUF(buffer):设置缓冲方式。BUF=1为缓冲方式,BUF=0为非缓冲方式。

SFNM(special fully nested mode):设置特殊完全嵌套方式。SFNM=1为特殊完全嵌套方式,SFNM=0为非特殊完全嵌套方式

D7~D5:未定义,通常设置为0。

需要注意:当多片8259A级联时,若在8259A的数据线与系统总线之间加入总线驱动器,引脚作为总线驱动器的控制信号,D3位BUF应设置为1,此时主片和从片的区分不能依靠引脚,而是由来选择,当=0时为从片;当

=1时为主片。如果BUF=0,则定义无意义。

2.操作命令字OCW的格式

操作命令字有OCW1, OCW2和OCW3。

(1)OCW1的格式

OWC1为中断屏蔽字,写入中断屏蔽寄存器(IMR)中,对外部中断请求信号IRi实行屏蔽,格式如图6.17所示。

图6.17 OCW1的格式

当某位Mi(interrupt mask)为1时,则对应的IRi请求被禁止;当Mi为0时,则对应的IRi请求被允许。在工作期间可根据需要随时写入或读出。

(2)OCW2的格式

OWC2用于设置中断优先级方式和中断结束方式,其格式如图6.18所示。

图6.18 OCW2的格式

L2~L0(IR level to be acted upon):8个中断请求输入端IR7~IR0的标志位,用来指定中断级别。L2~L0指定的中断级别是否有效,由SL(specific level)位控制。当SL=1时,L2~L0定义有效;当SL=0时,L2~L0定义无效。

EOI(end of interrupt):中断结束命令。若EOI=1时,在中断服务子程序结束时向8259A 回送中断结束命令EOI,以便使中断服务寄存器(ISR)中当前最高优先权位复位(普通EOI

方式),或由L2~L0表示的优先权位复位(特殊EOI方式)。

R(rotation):设置优先权循环方式位。R=1为优先权自动循环方式;R=0为优先权固定方式。D4, D3为OCW2标志位。

(3)OCW3的格式

OCW3用于设置或清除特殊屏蔽方式和读取寄存器的状态,格式如图6.19所示。

RR(read register command):读ISR和IRR命令位,RIS(read interrupt register select)读寄存器选择位。当RR=1,RIS=0时,读取IRR命令;当RR=1,RIS=1时,读取ISR命令。在进行读ISR或IRR操作时,先写入读命令OCW3,然后紧接着执行读ISR或IRR的指令。

图6.19 OCW3的格式

例如,设8259A的两个端口地址为20H和21H,OCW3, ISR和IRR共用一个地址20H。读取ISR内容的程序段为

MOV AL, 00001011B

OUT 20H, AL ; 读ISR命令写入OCW3

IN AL, 20H ; 读ISR内容至AL中读取IRR内容的程序段为

MOV AL, 00001010B

OUT 20H, AL ; 读IRR命令写入OCW3

IN AL, 20H ; 读IRR内容至AL中

P(poll command):为中断状态查询位。当P=1时,可通过读入状态寄存器的内容,查询是否有中断请求正在被处理,如有则给出当前处理中断的最高优先级。中断状态寄存器如图6.20所示。

图6.20 中断状态寄存器

在读取中断状态字时,先写入中断查询命令,然后读取中断状态字,程序如下:

MOV AL, 00001111B

OUT 20H, AL ; 读中断状态字命令写入OCW3

IN AL, 20H ; 读中断状态字

ESMM(enable special mask mode)与SMM(special mask mode)组合可用来设置或取消特殊屏蔽方式。当ESMM=1,SMM=1时,设置特殊屏蔽;当ESMM=1,SMM=0时,取消特殊屏蔽。

3.8259A的初始化编程

8259A的初始化编程需要写入初始化命令字ICW1~ICW4,对它的连接方式、中断触发方式和中断结束方式进行设置。但由于ICW1~ICW4使用两个端口地址,即ICW1用A0=0的端口,ICW2~ICW4使用A0=1的端口,因此初始化程序应严格按照系统规定的顺序写入,即先写入ICW1,接着写ICW2, ICW3, ICW4。

8259A的初始化流程如图6.21所示。

操作命令字OCW1~OCW3的写入比较灵活,没有固定的格式,可以在主程序中写入,也可以在中断服务子程序中写入,视需要而定。下面通过例子来说明如何编写8259A的初始化程序。

图6.21 8259A初始化流程图

【例6.1】某微机系统使用主、从两片8259A管理中断,从片中断请求INT与主片的IR2连接。设主片工作于特殊完全嵌套、非缓冲和非自动结束方式,中断类型号为40H,端口地址

为20H和21H。从片工作于完全嵌套、非缓冲和非自动结束方式,中断类型号为70H,端口地址为80H和81H。试编写主片和从片的初始化程序。

根据题意,写出ICW1, ICW2, ICW3和ICW4的格式,按图6.21的顺序写入。编写初始化程序如下:

主片8259A的初始化程序如下:

MOV AL, 00010001B ; 级联, 边沿触发, 需要写ICW4

OUT 20H, AL ; 写ICW1

MOV AL, 01000000B ; 中断类型号40H

OUT 21H, AL ; 写ICW2

MOV AL, 00000100B ; 主片的IR2引脚接从片

OUT 21H, AL ; 写ICW3

MOV AL, 00010001B ; 特殊完全嵌套、非缓冲、自动结束

OUT 21H, AL ; 写ICW4

从片8259A初始化程序如下:

MOV AL, 00010001B ; 级联, 边沿触发, 需要写ICW4

OUT 80H, AL ; 写ICW1

MOV AL, 01110000B ; 中断类型号70H

OUT 81H, AL ; 写ICW2

MOV AL, 00000010B ; 接主片的IR2引脚

OUT 81H, AL ; 写ICW3

MOV AL, 00000001B ; 完全嵌套、非缓冲、非自动结束

OUT 81H, AL ; 写ICW4

程序设计典型例题解析(2)

程序设计典型例题解析(2)

典型例题解析(2) 一、填空题 1.以顺序输入模式打开“c:\source1.txt”文件的命令是(1);以输出方式打开“c:\source2.txt”文件的命令是(2)。 分析:Print # 语句用于将把数据写入文件中。Print语句格式为: Open 文件名 [For模式] As [#] 文件号 “For 模式”为指定打开文件的模式是数据的输入模式还是输出模式。 结论:答案应为:(1)Open "c:\source1.txt" For Input As #1 (2)Open "c:\source2.txt" For Output As #2 2.在Visual Basic中,文件系统控件包括(1)、(2)和文件列表框(FileListBox)。三者协同操作可以访问任意位置的目录和文件,可以进行文件系统的人机交互管理。 分析:在Visual Basic中,文件系统控件包括驱动器列表框(DriveListBox)、目录列表

框(DirListBox)和文件列表框(FileListBox)。驱动器列表框可以选择或设置一个驱动器,目录列表框可以查找或设置指定驱动器中的目录,文件列表框可以查找指定驱动器指定目录中文件信息,三者协同操作可以访问任意位置的目录和文件,可以进行文件系统的人机交互管理。 结论:答案应为:(1)驱动器列表框(DriveListBox)(2)目录列表框(DirListBox) 3.每次重新设置驱动器列表框的Drive属性时,都将引发(1)事件。可在该事件过程中编写代码修改目录列表框的路径,使目录列表框内容随之发生改变。 分析:在Visual Basic中,每次重新设置驱动器列表框的Drive属性时,都将引发Change事件。可在Change事件过程中编写代码修改目录列表框的路径,使目录列表框内容随之发生改变。驱动器列表框的默认名称为Drive1,其Change事件过程的开头为Drive1_Change()。 结论:答案应为:(1)Change 4.目录列表框用来显示当前驱动器下目录

笔记本电脑的初始化设置

4.1.1 BIOS程序的基础知识 笔记本电脑的初始化是通过BIOS程序实现的。BIOS(Basic Input Output System,基本输入/输出系统)是电脑中最基础而叉最重要的程序,也就是说电脑的最原始的操作都是依照BIOS程序来完成的。更摘译的说法为BIOS程序是硬件和软件之间的转换器或接口.负责开机时对系统的各个硬件进行初始化设置和测试,以确保系统能够正常工作。 在进行笔记本电脑维修时,常常需要通过BIOS程序完成一些基本设置。 1.BIOS程序的功能 (1)硬件中断服务 BIOS中断服务程序实质上是系统软件与硬件之间的一个可编程接口,主要用于程序软件与硬件之间的连接,如Windows系统对光驱、软驱、硬盘等的管理以及中断设置 服务。 (2)系统设置程序 电脑部件配置记录存放在一块可擦写的CMOS洲芯片中,主要保存着系统的基本配置情况,如CPU的特性以及软、硬盘驱动器等部件的信息。在BIOS的ROM芯片中装有系统设置程序,主要用来设置COMS RAM中的各项参数。在开机时按某个特定键就可以进入这个程序,它具有良好的交互界面。 CMOS RAM通常集成在南桥芯片中,与实时时钟电路,CMOS电池等构成

CMOS电路,主要用于保存系统时间、主板上存储器的容量,硬盘类型、显卡类型、当前系统硬件配置和用户设置的某些参数等重要信息。当电脑断电后,由一块纽扣电池虐棋使CMOS电路正常工作的电源,确保CMOS RAM中的信息不丢失。也就是说,CMOS电路会一直处于工作状态,可随时参与唤醒任务。 (3)POST上电自检 电脑接通电源后,系统首先进行一个自己检查的例行程序,这个程序通常称为POST上电白检。 当主扳接通电源后,系统首先对内部的各个设备进行检查。在按卜启动键时,系统控制权就交给BIOS程序。刚开机时的电压不稳定,.主板撺制芯片会向CPU发出并保持一个RESET信号,让CPU衲始化,同时等待电源稳定信号。当电源稳定以后,芯片组取。卜RESET信号,CPU开始执行BIOS程序启动指令。BIOS程序启动后的首要工作就是POST自检,对笔记本电脑的硬件设备进行一一检查。 (4)系统启动自举程序 系统完成POST自检后,BIOS程序就首先按照系统CMOS设置中保存的启动程序顺序搜索软、硬盘驱动器及光驱、网络服务嚣等,有效地启动驱动器,读入操作系统引导记录,然后将系统控制权交给引导记录,并由引导记录来完成系统的顺序启动。 2.BlOS程序的作用 (1)自检及初始化 开机后,BIOS程序最先启动,然后它会对电脑的硬件设备进行彻底的检验和

编译原理词法分析习题集带答案

《编译原理》习题(一)——词法分析 一、是非题(请在括号内,正确的划√,错误的划×) 1.编译程序是对高级语言程序的解释执行。(× ) 2.一个有限状态自动机中,有且仅有一个唯一的终态。(×) 9.两个正规集相等的必要条件是他们对应的正规式等价。(× ) 二、选择题 1.词法分析器的输出结果是_____。 A.( ) 记号B.( ) 相应条目在符号表中的位置 C.( ) 记号和属性二元组D.( ) 属性值 2.正规式M 1 和M 2 等价是指_____。 ! A.( ) M1和M2的状态数相等B.( ) M1和M2的有向边条数相等C.( ) M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等3.语言是 A.句子的集合B.产生式的集合 C.符号串的集合D.句型的集合 4.编译程序前三个阶段完成的工作是 A.词法分析、语法分析和代码优化 B.代码生成、代码优化和词法分析 C.词法分析、语法分析、语义分析和中间代码生成 D.词法分析、语法分析和代码优化 5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即 [ A.字符B.单词C.句子D.句型 6.构造编译程序应掌握______。 A.( )源程序B.( ) 目标语言 C.( ) 编译方法D.( ) 以上三项都是 7.词法分析的任务是 A.识别单词B.分析句子的含义 C.识别句子D.生成目标代码 三、填空题 1.计算机执行用高级语言编写的程序主要有两种途径:___解释__和__编译___。 3.编译过程可分为(词法分析),(语法分析),(语义分析与中间代码生成),(优化)和(目标代码生成)五个阶段。 ? 6.扫描器的任务是从(源程序中)中识别出一个个(单词符号)。 17.一张转换图只包含有限个状态,其中有一个被认为是(初)态;而且实际上至少要有一个(终)态。 1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。3.通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序

C8051F020单片机初始化程序和编译步骤

C8051F020单片机初始化程序和编译步骤 2011-02-15 12:20:06| 分类:默认分类 | 标签: |字号大中小订阅 C8051F020编程步骤 一、编程步骤: 1、看门狗设置 2、系统初始化 3、端口初始化 4、对应功能初始化(如:串口,定时器,I2C,SPI,PCA, DAC/ADC,中断等等) 5、功能函数或中断函数(如需要)6、包含的头 文件 7、项目说明 二、对应功能初始化要点: 1、Uart:(1)串口工作模式由SCON设定(2)定时器工作方式设定TMOD (3)波特率TH载入值设定 (4)启动TR1 (5)时钟基准 CKCON (6)波特率加倍设定 PCON(7)开中断使 能TI 2、Time:(1)工作方式设定TMOD (2)定时器时钟基准CKCON (3)启动/停止TCON设定TRn 3、Interrupt:(1)中断允许IE (2)触发方式设定(上下沿,电平)(3)对应控制位允许设定,如ES串口 允许 C8051F020单片机初始化程序 ; $INCLUDE (C8051F020.inc) https://www.wendangku.net/doc/a516922185.html,/ C8051F020单片机功能强大,初始化也比较繁杂,为了便于初始化各功能模块,我们编了此程序 可看着“说明”初始化。 ORG SYS_INIT ;※▲◆●◎★☆△ ;◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆ ;■-- <1> --电源管理 ; PCON ; POWER CONTROL ;■-- <2> --系统时钟和振荡器 ; OSCXCN ; EXTERNAL OSCILLATOR CONTROL ; OSCICN ; INTERNAL OSCILLATOR CONTROL ;■-- <3> --复位及看门狗管理 ; RSTSRC ; RESET SOURCE ; WDTCN ; WATCHDOG TIMER CONTROL ;■-- <4> --FLASH存储器编程和安全管理 ; FLSCL ; FLASH MEMORY TIMING PRESCALER ; PSCTL ; PROGRAM STORE R/W CONTROL ; FLACL ; FLASH ACESS LIMIT ;■-- <5> --中断控制 ; IE ; INTERRUPT ENABLE ; EIE1 ; EXTERNAL INTERRUPT ENABLE 1

安卓程序初始化

关于新版的安卓应用程序与老版不一致的初始化,将新版的初始化配置成老板的初始化,以便跟着教程学习。 差别描述: 老版: (1) (2)MainActivity.java import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity{} (3)AndroidManifest.xml 新版: (1) (2)MainActivity.java import android.support.v7.app.ActionBarActivity; public class MainActivity extends ActionBarActivity {} (3) 解决办法:

c语言编程例题与答案解析

实验报告三 (四学时) 2.1 实验目的 (1)掌握函数的定义和调用; (2)了解函数间的参数传送; 2.2 基础实验 【题目3-1】编写函数实现将输入的字母转换成大写字母(若输入小写则转换,大写字母直接输出,其他字符请输出提示“请输入字母”)。 算法分析: 1、输入:通过键盘接收一个字符; 2、条件判断:调用判别函数 3、函数功能为:蒋所输入字符进行判别处理,若输入小写则转换,大写字母直接输出,其他字符请输出提示“请输入字母” 4、程序结束。 【实验3-1】代码及运行结果:

【题目3-2】从键盘输入若干个同学计算机课程期末考试成绩(学生人数可由用户输入),求该课程的期末成绩的平均分并输出。 函数功能要求:实现若干(例如5名)同学的的期末成绩输入,并统计出平均分。 算法分析: 1、输入:通过键盘接收同学个数; 2、调用求平均分函数 3、输出平均成绩 4、程序结束。

【实验3-2】代码及运行结果:

【题目3-3】请用函数编写程序实现:计算3 到100 之间所有素数的平方根之和,并输出。s=148.874270。 算法分析: 1、编写函素数判别函数,确定返回标记,如果是素数返回1,否则返回0 2、编写主函数,用一重循环遍历100以内所有数据 2.1、通过素数判别函数对循环的数据进行是否为素数的判别 2.2、返回判别为真的整数,并输出 3、程序结束。 【实验3-3】代码及运行结果: #include #include int Prime(int x) { int i ; if(x<=1) return 0; for(i=2;i<=x-1;i++) { if(x%i==0) { return 0;

单片机串口初始化

单片机串口初始化:TMOD=0X20; TH1=0Xfd; TL1=0xfd; PCON=0x00;

TR1=1; SCON=0x50; EA=0; 模数转换子程序: MOV R0,#30H ;设立数据存储区指针 MOV R2, #08H ;设置 2 路采样计数值 SETB IT0 ;设置外部中断 0 为边沿触发方式SETB EA ;CPU 开放中断 SETB EX0 ;允许外部中断 0 中断 MOV DPTR,#FEF8H ;送入地址并指向 IN0 LOOP: MOVX @DPTR, A ;启动 A/D 转换,A 的值无意义HERE: SJMP HERE ;等待中断 中断服务程序: MOVX A, @DPTR ;读取转换后的数字量 MOV @R0, A ;存入片内RAM 单元 INC DPTR ;指向下一模拟通道 INC RO ;指向下一个数据存储单元DJNZ R2, INT0 ;8 路未转换完,则继续 CLR EA ;已转换完,则关中断 CLR EX0 ;禁止外部中断 0 中断 RETI ;中断返回 INT0: MOVX @DPTR, A ;再次启动 A/D 转换 RETI ;中断返回 判断比较子程序: CLR C ;清进位位 MOV A, 30H ;取气体传感器值 SUBB A,#90H ;与阀值比较 JNC BAOJIN ;超过值转报警 发送 AT 命令子程序:

for (i=0;i<4;i++) {hh=&doc0[0] ;发送 ATE0 SBUF=doc0[i]; while(TI==0);TI=0; delay(); for (j=0;j<4;j++) { while(RI==0);RI=0 ;接收 OK mnk[j]=SBUF; if ((mnk[j]^0x4b)==0) { hh=mnk[j]; break;}

STM32F103VC初始化程序

#include"ST_M3_header.h" /************* APB2ê±?óê1?ü ****************/ #define AFIO_EN (uint32_t)1 << 0 #define IOPA_EN (uint32_t)1 << 2 #define IOPB_EN (uint32_t)1 << 3 #define IOPC_EN (uint32_t)1 << 4 #define IOPD_EN (uint32_t)1 << 5 #define IOPE_EN (uint32_t)1 << 6 #define IOPF_EN (uint32_t)1 << 7 #define IOPG_EN (uint32_t)1 << 8 #define ADC1_EN (uint32_t)1 << 9 #define ADC2_EN (uint32_t)1 << 10 #define TIM1_EN (uint32_t)1 << 11 #define SPI1_EN (uint32_t)1 << 12 #define TIM8_EN (uint32_t)1 << 13 #define USART1_EN (uint32_t)1 << 14 #define ADC3_EN (uint32_t)1 << 15 /************* APB1ê±?óê1?ü ****************/ #define TIM2_EN (uint32_t)0x01 #define TIM3_EN (uint32_t)0x02 #define TIM4_EN (uint32_t)0x04 #define TIM5_EN (uint32_t)0x08 #define TIM6_EN (uint32_t)0x10 #define TIM7_EN (uint32_t)0x20 #define WWDG_EN (uint32_t)0x800 #define SPI2_EN (uint32_t)0x4000 #define SPI3_EN (uint32_t)0x8000 #define USART2_EN (uint32_t)0x20000 #define USART3_EN (uint32_t)0x40000 #define USART4_EN (uint32_t)0x80000 #define USART5_EN (uint32_t)0x100000 #define I2C1_EN (uint32_t)0x200000 #define I2C2_EN (uint32_t)0x400000 #define USB_EN (uint32_t)0x800000 #define CAN_EN (uint32_t)0x2000000 #define BKP_EN (uint32_t)0x8000000 #define PWR_EN (uint32_t)0x10000000 #define DAC_EN (uint32_t)0x20000000 /************* APBê±?óê1?ü ****************/ #define DMA1_EN (uint32_t)1 << 0 #define DMA2_EN (uint32_t)1 << 1 #define SRAM_EN (uint32_t)1 << 2

单片机程序分析试题与答案

六、设计题 1.某单片机控制系统有8个发光二极管。试画出89C51与外设的连接图并编程使它们由右向左轮流点亮。 答:图(5分) 构思(3分) MOV A,#80H (1分) UP:MOV P1,A (1分) RR A (2分) SJMP UP (1分) 2.某控制系统有2个开关K1和K2,1个数码管,当K1按下时数码管加1,K2按下时数码管减1。试画出8051与外设的连接图并编程实现上述要求。 答:图(5分) 构思(3分) 程序(4分) ORG 0000H LJMP MAIN ORG 0003H LJMP AINT0 ORG 0013H LJMP BINT1 MAIN: MOV IE,#83H SETB IT0 SETB IT1 MOV R0,#00H MOV DPTR,#TAB UP: MOV A,R0 MOVC A,@A+DPTR MOV P1,A SJMP UP AINT0: INC R0 CJNE R0,#10,AINT01 MOV R0,#0 AINT01: RETI BINT1: DEC R0 CJNE R0,#0FFH,BINT11 MOV R0,#9 BINT11: RETI 1.已知在累加器A中存放一个BCD数(0~9),请编程实现一个查平方表的子程序。 1.SQR:1NC A MOVC A,@A+PC RET TAB:DB 0,1,4,9,16 DB 25,36,49,64,81 2.请使用位操作指令实现下列逻辑操作:BIT=(10H∨P1.0)∧(11H∨C Y) 2.ORL C,11H

MOV 12H,C MOV C,P1.0 ORL C,/10H ANL C,12H MOV BIT,C RET 3.已知变量X存于V AR单元,函数值Y存于FUNC单元,按下式编程求Y值。 Y= 10 0 1 x x x > - = 0,Y=1 MOV A,#0FFH ;x<0,Y=-1 SJMP RES POSI:MOV A,#01H RES:MOV FUNC,A RET 4.已知在R2中存放一个压缩的BCD码,请将它拆成二个BCD字节,结果存于SUM开始的 单元中(低位在前)。 4. MOV R0,#SUM MOV A,R2 ANL A,#OFH MOV @R0,A ;存低字节BCD MOV A,R2 ANL A,#0F0H SW AP A 1NC R0 MOV @R0,A ;存高字节BCD RET 5.将存于外部RAM 8000H开始的50H数据传送0010H的区域,请编程实现。 5. MOV DPTR,#8000H MOV R0,#10H MOV R2,#50H LOOP:MOVX A,@DPTR ;取数 MOVX @R0,A ;存数 1NC DPTR 1NC R0 DJNZ R2,LOOP RE T

SPI初始化程序

//SPI初始化子程序,用于数码管显示 void spi_intial() { SpiaRegs.SPICCR.all =0x0047; // 使SPI处于复位方式, 下降沿, 八位数据SpiaRegs.SPICTL.all =0x0006; //主控模式,般时钟模式,使能talk,闭SPI中断SpiaRegs.SPIBRR =0x007F; //配置波特率 SpiaRegs.SPICCR.all =SpiaRegs.SPICCR.all|0x0080; // 退出复位状态EALLOW; GpioMuxRegs.GPFMUX.all=0x000F;// 设置通用引脚为SPI引脚 EDIS; } //IO初始化子程序 void gpio_init() { EALLOW; GpioMuxRegs.GPAMUX.bit.TDIRA_GPIOA11=0; //GPIOA11设置为一般I/O口GpioMuxRegs.GPADIR.bit.GPIOA11=1; //把GPIOA11设置为输出 //将GPIOE0~GPIOE2配置为一般I/O口输出,作138译码 GpioMuxRegs.GPEMUX.all = GpioMuxRegs.GPEMUX.all&0xfff8; GpioMuxRegs.GPEDIR.all = GpioMuxRegs.GPEDIR.all|0x0007; //将GPIOB8~GPIOB15配置为一般I/O口,D0~D7 GpioMuxRegs.GPBMUX.all = GpioMuxRegs.GPBMUX.all&0x00ff; EDIS; GpioDataRegs.GPADAT.bit.GPIOA11=0; //GPIOA11=0;该端口为74HC595锁存信号} //键扫描子程序K1~K8 int Keyscan1(void) { EALLOW; //将GPIOB8~GPIOB15配置为输入,D0~D7 GpioMuxRegs.GPBDIR.all = GpioMuxRegs.GPBDIR.all&0x00ff; EDIS; GpioDataRegs.GPEDAT.all = 0xfff8; //选通KEY低8位 for (i=0; i<100; i++){} //延时 //判K1~K8是否按下 if ((GpioDataRegs.GPBDAT.all|0x00ff)!=0xffff) { for (i=0; i<30000; i++){} //延时消抖 if ((GpioDataRegs.GPBDAT.all|0x00ff)!=0xffff) { KeyReg1=GpioDataRegs.GPBDAT.all ; //读键值 while ((GpioDataRegs.GPBDAT.all|0x00ff)!=0xffff) //判K1~K8是否松开{ GpioDataRegs.GPDDAT.bit.GPIOD1 = !GpioDataRegs.GPDDAT.bit.GPIOD1;

软件测试试题及答案分析

单选 1. 属于黑盒测试的方法?( C) A.基于基本路径 B.控制流 C.基于用户需求测试 D.逻辑覆盖 2.在Assert类中断言对象为NULL是_____。(D) A.assertEquals B.assertTrue C.fail D.assertNull 3.___________的目的是对最终软件系统进行全面的测试确保最终软件系统产品满足需求(A) A.系统测试B.集成测试 C.单元测试D.功能测试 4.有一组测试用例使得每一个被测试用例的分支覆盖至少被执行一次,它满足的覆盖标准___________。(B) A. 语句覆盖 B.判定覆盖 C.条件覆盖 D.路径覆盖 5.软件测试的目的是___________。(C) A.表明软件的正确性B.评价软件质量 C.尽可能发现软件中的错误D.判定软件是否合格 6.关于白盒测试与黑盒测试的最主要区别,正确的是___________。(A) A.白盒测试侧重于程序结构,黑盒测试侧重于功能 B.白盒测试可以使用测试工具,黑盒测试不能使用工具 C.白盒测试需要程序参与,黑盒测试不需要 D.黑盒测试比白盒测试应用更广泛 7.软件测试类型按开发阶段划分___________。(B) A.需要测试﹑单元测试﹑集成测试 B.单元测试﹑集成测试﹑确认测试﹑系统测试﹑验收测试 C.单元测试﹑集成测试﹑确认测试 D.调试﹑单元测试﹑功能测试 8.在Junit中,testXXX()方法就是一个测试用例,测试方法是______。(B) A.private void testXXX() B.public void testXXX() C.public float testXXX() D.public int testXXX() 9.软件测试是软件质量保证的重要手段,下述哪种测试是软件测试的最基础环节?(A)A.单元测试B.集成测试 C.目的测试D.确认测试 10.增量式集成测试有3种方式:自顶向下增量测试方法,和混合增量测试方式。(D ) A.自中向下增量测试方法B.多次性测试 C.维护D.自底向上增量测试方法 1)以下不属于软件测试的原则有(D )。 A.程序最好别让由编写该程序的程序员自己来测试

MCS-51单片机实用子程序库

《MCS-51单片机实用子程序库(96年版)》 周航慈 目前已有若干版本的子程序库公开发表,它们各有特色。笔者在1988年也编制了两个子程序库(定点子程序库和浮点子程序库),并在相容性、透明性、容错性和算法优化方 面作了一些工作。本程序库中的开平方算法为笔者研究的快速逼近算法,它能达到牛顿迭代法同样的精度,而速度加快二十倍左右,超过双字节定点除法的速度。经过八年来全国广大用户的实际使用,反馈了不少信息,陆续扩充了一些新的子程序,纠正了一些隐含错误,成为现在这个最新版本。 本子程序库对《单片机应用程序设计技术》一书附录中的子程序库作了重大修订:(1)按当前流行的以 IBM PC 为主机的开发系统对汇编语言的规定,将原子程序库的标号和位地址进行了调整,读者不必再进行修改,便可直接使用。 (2)对浮点运算子程序库进行了进一步的测试和优化,对十进制浮点数和二进制浮点数的相互转换子程序进行了彻底改写,提高了运算精度和可靠性。 (3)新增添了若干个浮点子程序(传送、比较、清零、判零等),使编写数据处理 程序的工作变得更简单直观。 在使用说明中开列了最主要的几项:标号、入口条件、出口信息、影响资源、堆栈 需求,各项目的意义请参阅《单片机应用程序设计技术》第六章 6.3.7 节的内容。程序 清单中开列了四个栏目:标号、指令、操作数、注释。为方便读者理解,注释尽力详细。 子程序库的使用方法如下: 1.将子程序库全部内容链接在应用程序之后,统一编译即可。优点是简单方便,缺点是程序太长,大量无关子程序也包含在其中。 2.仅将子程序库中的有关部分内容链接在应用程序之后,统一编译即可。有些子程序需要调用一些低级子程序,这些低级子程序也应该包含在内。优点是程序紧凑,缺点是需要对子程序库进行仔细删节。 (一)MCS-51定点运算子程序库及其使用说明 定点运算子程序库文件名为DQ51.ASM,为便于使用,先将有关约定说明如下: 1.多字节定点操作数:用[R0]或[R1]来表示存放在由R0或R1指示的连续单元中的数据。地址小的单元存放数据的高字节。例如:[R0]=123456H,若(R0)=30H,则(30H)=12H,(31H)=34H,(32H)=56H。 2.运算精度:单次定点运算精度为结果最低位的当量值。 3.工作区:数据工作区固定在PSW、A、B、R2~R7,用户只要不在工作区中存放无 关的或非消耗性的信息,程序就具有较好的透明性。

《Python程序设计基础》习题答案与分析

Python程序设计基础习题答案与分析 程昱

第1章基础知识 1.1 简单说明如何选择正确的Python版本。 答: 在选择Python的时候,一定要先考虑清楚自己学习Python的目的是什么,打算做哪方面的开发,有哪些扩展库可用,这些扩展库最高支持哪个版本的Python,是Python 2.x还是Python 3.x,最高支持到Python 2.7.6还是Python 2.7.9。这些问题都确定以后,再做出自己的选择,这样才能事半功倍,而不至于把大量时间浪费在Python的反复安装和卸载上。同时还应该注意,当更新的Python版本推出之后,不要急于更新,而是应该等确定自己所必须使用的扩展库也推出了较新版本之后再进行更新。 尽管如此,Python 3毕竟是大势所趋,如果您暂时还没想到要做什么行业领域的应用开发,或者仅仅是为了尝试一种新的、好玩的语言,那么请毫不犹豫地选择Python 3.x系列的最高版本(目前是Python 3.4.3)。 1.2 为什么说Python采用的是基于值的内存管理模式? Python采用的是基于值的内存管理方式,如果为不同变量赋值相同值,则在内存中只有一份该值,多个变量指向同一块内存地址,例如下面的代码。 >>> x = 3 >>> id(x) 10417624 >>> y = 3 >>> id(y) 10417624 >>> y = 5 >>> id(y) 10417600 >>> id(x) 10417624 >>> x = [1, 2, 3, 1, 1, 2] >>> id(x[0])==id(x[3])==id(x[4]) True 1.3 解释Python中的运算符“/”和“//”的区别。 答: 在Python 2.x中,“/”为普通除法,当两个数值对象进行除法运算时,最终结果的精度与操作数中精度最高的一致;在Python 3.x中,“/”为真除法,与除法的数学含义一致。

算法设计与程序分析习题精选含答案(第四章)

作业四 4.1.2 Alternating glasses a. There are 2n glasses standing next to each other in a row, the first n of them filled with a soda drink and the remaining n glasses empty. Make the glasses alternate in a filled-empty-filled-empty pattern in the minimum number of glass moves. [Gar78] b. Solve the same problem if 2n glasses—n with a drink and n empty—are initially in a random order 答: 图1 杯子分组 a.两个为一组,在前n个杯子中判断偶数的杯子是否为空,不为空与同组的进行交换,共需 要交换n/2次,考虑n为奇数对n/2进行向下取整即可。 b.由于最终偶数位置为空杯,奇数位置为满杯,从第一项开始遍历,如果在奇数位置出现空 杯与后面偶数位置出现的第一个满杯进行交换,如果偶数位置出现满杯则与后面奇数出现的第一个空杯进行交换,每次交换使得两个位置满足条件,最坏情况是2n位置均为乱序,则需要交换n次,最好的情况为2n位置均满足条件,则交换次数为[0,n] 4.1.7 Apply insertion sort to sort the list E, X, A, M, P, L, E in alphabetical order. 4.2.1 Apply the DFS-based algorithm to solve the topological sorting problem for the following digraphs:

统计分析软件复习题答案

习题程序: 1. data SCORE; input name$ sex$ Chinese maths physics chemist English; sum= Chinese+maths+physics+chemist+English ; mean=sum/5; cards; 王辉男80 85 82 78 90 李唱女85 93 88 70 89 张三男77 86 67 82 85 王二女81 78 93 83 87 ;run; data jinrong; Set SCORE; Where maths>85; Run; 2. input x r; do i=1 to 3; x+x*r; end; cards; 500 0.07 ;run; 3. (1)data income;input year x1-x3; income=x1+x2+x3;drop x1 x2 x3; cards; 1985 298.28 29.47 39.95 1990 510.86 70.68 75.81 1995 996.51 287.24 195.74 2000 1125.34 488.89 515.35 2001 1165.17 532.61 533.80 ;run; (2)data income(keep=year income); input year x1-x3;income=x1+x2+x3; cards; 1985 298.28 29.47 39.95 1990 510.86 70.68 75.81 1995 996.51 287.24 195.74 2000 1125.34 488.89 515.35 2001 1165.17 532.61 533.80 ;run; (3)data income(drop=i);

oled初始化程序

#include #include "io.h" #include "system.h" #include "oled.h" //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= // Patterns //=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= voidWrite_Command(unsigned char Command) //OLED_IP WRITE COMMAND { IOWR(OLED_BASE,0,Command); } voidWrite_Data(unsigned char data) //OLED_IP WRITE DATA { IOWR(OLED_BASE,1, data); } voiduDelay(unsigned char l) { while(l--) usleep(1); } void Delay(unsigned char n) { unsigned char i,j,k; for(k=0;k

} //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= // Instruction Setting //-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= voidSet_Start_Column(unsigned char d) { Write_Command(0x00+d%16); // Set Lower Column Start Address for Page Addressing Mode // Default => 0x00 Write_Command(0x10+d/16); // Set Higher Column Start Address for Page Addressing Mode // Default => 0x10 } voidSet_Addressing_Mode(unsigned char d) { Write_Command(0x20); // Set Memory Addressing Mode Write_Command(d); // Default => 0x02 // 0x00 => Horizontal Addressing Mode // 0x01 => Vertical Addressing Mode // 0x02 => Page Addressing Mode } voidSet_Column_Address(unsigned char a, unsigned char b) { Write_Command(0x21); // Set Column Address Write_Command(a); // Default => 0x00 (Column Start Address) Write_Command(b); // Default => 0x83 (Column End Address) } voidSet_Page_Address(unsigned char a, unsigned char b) { Write_Command(0x22); // Set Page Address Write_Command(a); // Default => 0x00 (Page Start Address) Write_Command(b); // Default => 0x07 (Page End Address) } voidSet_Start_Line(unsigned char d) {

应用程序正常初始化(0xc0000005)失败

应用程序正常初始化(0xc0000005)失败 说明文字:PAGE-FAULT-IN-NONPAGED-AREA 通常的原因:内存错误(数据不能使用分页文件交换到磁盘中). 解决方法:卸掉所有的新近安装的硬件. 运行由计算机制造商提供的所有系统诊断软件.尤其是内存检查. 检查是否正确安装了所有新硬件或软件,如果这是一次全新安装,请与硬件或软件制造商联系,获得可能需要的任何Windows更新或驱动程序. 禁用或卸载所有的反病毒程序. 禁用BIOS内存选项,例如cache或shadow. 应用程序初始化内存分配错误。 0xc0000005错误发生的诱因主要分为四大类: 1、自由表存储载体的缺陷(主要体现在VCX、VCT,SCX和SCT上)。 2、第三方监控性质的软件。(如:防毒软件在内存即时监控状态下、词霸软件在全屏拾取模式下等); 3、VisualFoxpro自身的代码漏洞; 4、硬件因素。 建议断开网络,然后关闭防火墙,再安装试试,如果不行,重启电脑再试,再不行则归类为程序缺陷了。

存不能为“read”或“written”的解决方案 有些人运行飚车程序的时候会弹出该内存不能为“read”的错误提示。希望以下文章能对大家有所帮助。 使用Windows操作系统的人有时会遇到这样的错误信息,运行某些程序的时候,有时会出现内存错误的提示,然后该程序会自动关闭或点击后关闭,严重的会无法关闭。 “0x????????”指令引用的“0x????????”内存。该内存不能为“read”。 “0x????????”指令引用的“0x????????”内存,该内存不能为“written”。 不知你出现过类似这样的故障吗?(0x后面内容有可能不一样。) 散一般出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件,这就有多方面的问题了。 1、微软IE缓冲溢出漏洞引起 2、内存或虚拟内存地址使用冲突造成程序的运行需要分配一定的内存地址给程序使用,当程序结束时释放留出空间让给新的程序使用,win是多任务的系统有时前程序未结束又有新的任务开始到底要多少内存或虚拟内存来保证我们同时运行的工作任务呢?也许win在这个问题上没弄好,所以有此错误常常发生,一般运行大型软件或多媒体后出现这种情况 3、劣质内存条也会出现这个问题一般来说,内存出现问题的可能性并不大,主要方面是:内存条坏了、内存质量有问题,还有就是2个不同牌子不同容量的内存混插,也比较容易出现不兼容的情况,同时还要注意散热问题,特别是超频后。你可以使用MemTest这个软件

程序设计典型例题解析(2)

典型例题解析(2) 一、填空题 1.以顺序输入模式打开“c:\source1.txt”文件的命令是(1);以输出方式打开“c:\source2.txt”文件的命令是(2)。 分析:Print # 语句用于将把数据写入文件中。Print语句格式为: Open 文件名 [For模式] As [#] 文件号 “For 模式”为指定打开文件的模式是数据的输入模式还是输出模式。 结论:答案应为:(1)Open "c:\source1.txt" For Input As #1 (2)Open "c:\source2.txt" For Output As #2 2.在Visual Basic中,文件系统控件包括(1)、(2)和文件列表框()。三者协同操作可以访问任意位置的目录和文件,可以进行文件系统的人机交互管理。 分析:在Visual Basic中,文件系统控件包括驱动器列表框(DriveListBox)、目录列表框(DirListBox)和文件列表框()。驱动器列表框可以选择或设置一个驱动器,目录列表框可以查找或设置指定驱动器中的目录,文件列表框可以查找指定驱动器指定目录中文件信息,三者协同操作可以访问任意位置的目录和文件,可以进行文件系统的人机交互管理。 结论:答案应为:(1)驱动器列表框(DriveListBox)(2)目录列表框(DirListBox) 3.每次重新设置驱动器列表框的Drive属性时,都将引发(1)事件。可在该事件过程中编写代码修改目录列表框的路径,使目录列表框内容随之发生改变。 分析:在Visual Basic中,每次重新设置驱动器列表框的Drive属性时,都将引发Change 事件。可在Change事件过程中编写代码修改目录列表框的路径,使目录列表框内容随之发生改变。驱动器列表框的默认名称为Drive1,其Change事件过程的开头为Drive1_Change()。 结论:答案应为:(1)Change 4.目录列表框用来显示当前驱动器下目录结构。刚建立时显示(1)的顶层目录和当前目录,如果要显示其他驱动器上的目录信息,必须改变路径,即重新设置目录列表框的(2)属性。 分析:在Visual Basic中,目录列表框用来显示当前驱动器下目录结构。刚建立时显示当前驱动器的顶层目录和当前目录,如果要显示其他驱动器上的目录,必须改变路径,即重新设置目录列表框的Path属性。 结论:答案应为:(1)当前驱动器(2)Path 5.对驱动器列表框来说,每次重新设置驱动器列表框的(1)属性时,将引发Change 事件;对目录列表框来说,当(2)属性值改变时,将引发Change事件;对于文件列表框,重新设置的(3)属性,将引发Change事件。 分析:在Visual Basic中,对驱动器列表框来说,每次重新设置驱动器列表框的Drive属性时,将引发Change事件;对于目录列表框和文件列表框改变路径,即重新设置列表框的Path属性,将引发Change事件。 结论:答案应为:(1)Drive(2)Path(3)Path 6.以下程序段简要说明驱动器列表框、目录列表框及文件列表框三者协同工作的情况。将程序段补充完整。

相关文档