搜档网
当前位置:搜档网 › 4课第一个单片机小程序

4课第一个单片机小程序

4课第一个单片机小程序
4课第一个单片机小程序

上一次我们的程序实在是没什么用,要灯亮还要重写一下片子,下面我们要让灯持续地闪烁,这就有一定的实用价值了,比如能把它当成汽车上的一个信号灯用了。怎样才能让灯持续地闪烁呢?实际上就是要灯亮一段时间,再灭一段时间,也就是说要P10持续地输出高和低电平。怎样实现这个要求呢?请考虑用下面的指令是否可行:

SETB P1.0

CLR P1.0 ……

这是不行的,有两个问题,第一,计算机执行指令的时间很快,执行完SETB P1.0后,灯是灭了,但在极短时间(微秒级)后,计算机又执行了CLR P1.0指令,灯又亮了,所以根本分辨不出灯曾灭过。第二,在执行完CLR P10后,不会再去执行SETB P1.0指令,所以以后再也没有机会让灭了。

为了解决这两个问题,我们能做如下设想,第一,在执行完SETB P1.0后,延时一段时间(几秒或零点几秒)再执行第二条指令,就能分辨出灯曾灭过了。第二在执行完第二条指令后,让计算机再去执行第一条指令,持续地在原地兜圈,我们称之为"循环",这样就能完成任务了。

以下先给出程序(后面括号中的数字是为了便于讲解而写的,实际不用输入):

;主程序:

LOOP: SETB P1.0 ;(1)熄灭灯

LCALL DELAY ;(2)延时一段时间

CLR P1.0 ;(3)点亮灯

LCALL DELAY ;(4)延时一段时间

AJMP LOOP ;(5)跳转到第一句LOOP处

;以下子程序

DELAY: MOV R7,#250 ;(6)

D1: MOV R6,#250 ;(7)

D2: DJNZ R6,D2 ;(8)

DJNZ R7,D1 ;(9)

RET ;(10)

END ;(11)

按上面的设想分析一下前面的五条指令。

第一条是让灯灭,第二条应当是延时,第三条是让灯亮,第四条和第二条一模一样,也是延时,第五条应当是转去执行第一条指令。第二和第四条实现的原理稍后谈,先看第五条,AJMP是一条指令,意思是转移,往什么地方转移呢?后面跟的是LOOP,看一下,什么地方还有LOOP,对了,在第一条指令的前面有一个LOOP,所以很直观地,我们能认识到,它要转到第一条指令处。这个第一条指令前面的LOOP被称之为标号,它的用途就是给这一行起一个名字,便于使用。是否一定要给它起名叫LOOP呢?当然不是,起什么名字,完全由编程序的人决定,能称它为A,X等等,当然,这个时候,第五条指令AJMP后面的名字也得

跟着改了。

第二条和第四条指令的用途是延时,它是怎样实现的呢?指令的形式是LCALL,这条指令称为调用子程序指令,看一下指令后面跟的是什么,DELAY,找一下DELAY,在第六条指令的前面,显然,这也是一个标号。这条指令的作用是这样的:当执行LCALL指令时,程序就转到LCALL后面的标号所标定的程序处执行,如果在执行指令的过程中遇到RET指令,则程序就返回到LCALL指令的下面的一条指令继续执行,从第六行开始的指令中,能看到确实有RET指令。在执行第二条指令后,将转去执行第6条指令,而在执行完6,7,8,9条指令后将遇到第10条令:RET,执行该条指令后,程序将回来执行第三条指令,即将P10清零,使灯亮,然后又是第四条指令,执行第四条指令就是转去执行第6,7,8,9,10条指令,然后回来执行第5条指令,第5条指令就是让程序回到第1条开始执行,如此周而复始,灯就在持续地亮、灭了。

在标号DELAY标志的这一行到RET这一行中的所有程序,这是一段延时程序,大概延时零点几秒,至于具体的时间,以后我们再学习如何计算。程序的最后一行是END,这不是一条指令,它只是告诉我们程序到此结束,它被称为"伪指令"。

单片机内部结构分析:为了知道延时程序是如何工作的,我们必需首先了解延时程序中出现的一些符号,就从R1开始,R1被称之为工作寄存器。什么是工作寄存器呢?让我们从现实生活中来找找答案。如果出一道数学题:123+567,让你回答结果是多少,你会马上答出是690,再看下面一道题:123+567+562,要让你要上回答,就不这么不难了吧?我们会怎样做呢?如果有张纸,就不难了,我们先算出123+567=690,把690写在纸上,然后再算690+562得到结果是1252。这其中1252是我们想要的结果,而690并非我们所要的结果,但是为了得到最终结果,我们又不得不先算出690,并记下来,这其实是一个中间结果,计算机中做运算和这个类似,为了要得到最终结果,一般要做很多步的中间结果,这些中间结果要有个地方放才行,把它们放哪呢?放在前面提到过的ROM中能吗?显然不行,因为计算机要将结果写进去,而ROM是不能写的,所以在单片机中另有一个区域称为RAM区(RAM 是随机存取存储器的英文缩写),它能将数据写进去。特别地,在MCS-51单片机中,将RAM中分出一块区域,称为工作寄存器区,上面程序用到的R6,R7就是在这个区里面,这我们会在第7课有详细的介绍。其实如果我们用C语言来写程序的话用根本不用了解工作寄存器这个概念了因为C编译器会自动处理.看上面的程序如果用c来写就是

#include

void DELAY() //延时函数

{ unsigned char i,j;

for(i=0;i<250;i++)

{

for(j=0;j<200;j++);

}

}

void main() //程序从这里开始执行

{

while(1) //这句的作用就是反复的执行下面这个{}中包含的4句

{

P1_0=1; //(1)熄灭灯

DELAY(); //(2)延时一段时间

P1_0=0; //(3)点亮灯

DELAY(); //(4)延时一段时间

}

}

在汇编例子中程序是从第一条语句开始执行的,而c不同在c语言里程序是从main() 这里开始执行的,关于(1)(2)(3)(4) 这几句的解释和上面的汇编一样,不再敖述。循环部分这里是用了一个while(1) 语句下面打了一个大括号,这样大括号中的这4条语句就会按(1)->(2)->(3)->(4) ->(1)->(2)->(3)->(4) ->(1)->(2)->(3)->(4)……永远不停的执行下去。这样灯就会持续的亮灭再亮再灭实现了闪烁效果,关于延时函数下节课再叙。

如何使用BSL方式给MSP 单片机烧录程序

如何使用BSL方式给MSP430单片机烧录程序 一,使用两个软件:IAR(EW430)和MSP430BSL.exe 二,IAR软件用于编程和编译;BSL软件负责载入烧录。三,在IAR中编程操作: IAR Systems是全球领先的嵌入式系统开发工具和服务的供应商。公司成立于1983年,迄今已有27年,提供的产品和服务涉及到嵌入式系统的设计、开发和测试的每一个阶段,包括:带有C/C++编译器和调试器的集成开发环境(IDE)、实时操作系统和中间件、开发套件、硬件仿真器以及状态机建模工具。 国内普及的MSP430开发软件种内不多,主要有IAR公司的Embedded Workbench for MSP430(简称为EW430)和AQ430。 目前IAR的用户居多。IAR EW430软件提供了工程管理,程序编辑,代码下载,调试等所有功能。并且软件界面和操作方法与IAR EW for ARM等开发软件一致。因此,学会了IAR EW430,就可以很顺利地过渡到另一种新处理器的开发工作。 IAR新建工程步骤 Step1:选择主菜单的File >New>Workspace命令,然后开启一个空白工作区窗口 Step2:选择主菜单Project>Create New Project>选择Empty project。点击OK。最好新建一个文件夹,用于放置所有的生成文件。选择保存路径后,点击保存,新工程建立完毕 Step3:file>new>file>编辑代码>save>文件名可以自己起,但后面一定要加 ”.c” ,保存为C文件 Step4: 右击工程名,将写好的程序添加进去Add>Add Files,也可以用Add>Add“main.c”添加入工程。 Step5: 右击工程名,点击Option>General Options>Device>选择MSP430F149 Step6: 继续设置Linker>Output>文件名.txt(这步很关键)>fomat>

单片机应用技术课程第四次形考作业

江苏开放大学 形成性考核作业学号2014070500077 姓名徐贺 课程代码110049 课程名称单片机应用技术评阅教师 第(4)次任务 共(4)次任务 江苏开放大学

单片机应用技术课程第四次形考作业 【作业内容】 1.单片机为什么需要系统扩展? 2.单片机系统扩展时,系统总线是如何构造的? 3.D/A转换通常采用什么方式? 4.实现A/D 转换常见的方法有哪些? 【作答结果】 1解答:因为资源不够了,或者说为了提高性价比。 比如控制100个LED灯的亮灭,假设要做的事很简单,就是控制灯的亮灭。如果直接用标准51,管脚肯定不够,如果换成脚比较多的芯片就会贵很多,做这么简单的事可能不值。这个时候就可以用74HC595的芯片扩展系统管脚数量。 这个是扩展管脚数量,其他的扩展RAM、ROM、定时器、AD,,,,都可以这么理解,原来没有的资源给加扩展一下,说白了,是提高了性价比。 2解答:对于没有内部ROM的单片机或者当程序较长、片内ROM容量不够时,用户必须在单片机外部扩展程序存储器。MCS-51单片机片外有16条地址线,即P0口和P2口,因此最大 寻址范围为64 KB(0000H~FFFFH)。MCS-51系列单片机片外引脚可以构成如图所示的三总线 结构:地址总线(AB)数据总线(DB)控制总线(CB)所有外部芯片都通过这三组总线进行扩展。 3解答:通常A/D转换的过程包括采样、保持和量化、编码两大步骤。 采样:是指周期地获取模拟信号的瞬时值,从而得到一系列时间上离散的脉冲采样值。 保持:是指在两次采样之间将前一次采样值保存下来,使其在量化编码期间不发生变化。 采样保持电路一般由采样模拟开关、保持电容和运算放大器等几个部分组成。 经采样保持得到的信号值依然是模拟量,而不是数字量。任何一个数字量的大小,都是以某个最小数字量单位的整数倍来表示的。 量化:将采样保持电路输出的模拟电压转化为最小数字量单位整数倍的转化过程称为量化。 所取的最小数量单位叫做量化单位,其大小等于数字量的最低有效位所代表的模拟电压大小,记作ULSB。 编码:把量化的结果用代码(如二进制数码、BCD码等)表示出来,称为编码。? A/D转换过程中的量化和编码是由A/D转换器实现的。一.A/D转换器的类型

一个单片机小程序编写

一个单片机小程序编写 单片机在家用电器和工业系统中应用广泛,下面给大家介绍一个单片机小程序的编写。 1、设计任务: 如果开关合上,L1亮,开关打开,L1熄灭,如图1所示。监视开关K1(接在P3.0端口上),用发光二极管L1(接在单片机P1.0端口上)显示开关状态。 2、电路原理图: 图1 3、系统板上硬件连线:如图1所示,图中VCC = +5V。 4、程序设计内容: (1)开关状态的检测过程: 开关状态是从单片机的P3.0端口输入信号,当拨开开关K1拨上去(开关断开),即输入高电平;当拨动开关K1拨下去(开关闭合),即输入低电平。可以采用JB BIT,REL 指令来完成对开关状态的检测即可。 (2)输出控制: 如图1所示,当P1.0端口输出高电平,即P1.0=1时,根据发光二极管的单向导电性可知,这时发光二极管L1熄灭;当P1.0端口输出低电平,即P1.0=0时,发光二极管L1亮。我们可以使用SETB P1.0指令使P1.0端口输出高电平,使用CLR P1.0指令使P1.0端口输出低电平。 5、程序框图:如图2所示。

图2 6、汇编源程序的编写: ORG 00H START: JB P3.0,D1 CLR P1.0 SJMP START D1: SETB P1.0 SJMP START END 7、用“keil软件编”写好汇编程序,然后转换成HEX文件并保存。 8、用“增强型A51编程器”把刚才写好的HEX文件烧写入单片机中。 9、把已写入程序的单片机,装入图1的电路,然后通电。当拨动开关K1拨下去(开关闭合),发光二极管L1亮;拨开开关K1拨上去(开关断开),发光二极管L1灭。说明刚才编写的程序达到了我们的设计要求。

单片机作业及答案 共13页

1.CS-51系列单片机串行口中断标志TI和R I在执行中断程序后,能否自动清零,这样设 计的意图是什么? 答:不能,由于串行通信的收发电路使用一个中断源,因而,有利于单片机查询是接收中断还是发送中断。同时有利于全双工通信。 2.写出8051单片机的复位及5个中断服务程序的入口地址。 答:(1)复位入口地址:0000H; (2)外部中断0中断服务程序入口地址为0003H; (3)定时器/计数器0中断服务程序入口地址为000BH; (4)外部中断1中断服务程序入口地址为0013H; (5)定时器/计数器1中断服务程序入口地址为001BH; (6)串行口中断服务程序入口地址为0023H。 3.简述MCS-51单片机的工作寄存器的分布结构(包括:几个区、如何选择、每个区几个 寄存器、如何表示)? 答:(1)四个通用寄存器区; (2)通过PSW的RS1、RS0选择: 00--0区、01—1区、10—2区、11—3区; (3)每个区有8个工作寄存器R0—R7; 4.MCS-51单片机的P0口作为一般的I/O口使用时应注意什么? 答:应注意: ①由于P0口的输出级是漏极开路的开漏电路,所以作为一般的I/O口使用时需 接外部上拉电阻; ②P0口的输出级的输出驱动能力,可以驱动8个LS的TTL电路,使用必须确 认是否能驱动的外部电路,否则应加驱动电路; ③由于P0口为准双向口,在读引脚时,应先把口置1。 5.画出MCS-51单片机的三总线图(控制总线应包括三条)并注明几条数据线、几条地址 线、各个控制线的意义。 答:(1) (2)8条数据线、16条地址线 (3)/RD:对外部RAM及I/O口的读允许; /WR:对外部RAM及I/O口的写允许; /PSEN:对外部ROM的读允许; 6.MCS-51系列单片机内部有哪些主要逻辑部件组成?(书) 答:CPU、RAM、程序存储器、定时器、I/O接口、中断系统、串行接口等。 7.简述P3口的特殊专用功能(第2功能)。 答:P3.0----串行通信收;P3.1-----串行通信发;P3.2-----外部中断0;P3.3-----外部中断1;P3.4----- T0的计数输入;P3.5----- T1的计数输入;P3.6-----外部数据区写有效; P3.7-----外部数据区读有效。

单片机课后作业

------ 单片机的基础知识(一)1.单片机系统与通用计算机系统在应用领域的区别; 2.与通用计算机相比,单片机系统的设计理念是什么? 3.“冯诺依曼”结构和“哈弗总线”结构的各自特点是什么?4.MCS-51、PIC单片机分别是哪一家公司开创? 5.ARM单片机的内核技术是哪国、哪个公司研发的?“ARM”英文全称是什么?

------ 单片机的基础知识(二) 简要回答下列问题: 1. 什么是“嵌入式系统”和“嵌入式控制器”: 2. 什么是“单片机最小系统”: 3. 与传统的“三总线”结构相比,SPI、I2C总线结构的系统其优点是什 么: 4. 单片机新型接口芯片的特点是什么: 5. 实验室中用于调试MCS-51单片机的“集成调试软件”的名称是什么? 有哪个国家开发?

------ 数值转换练习1,将下列二进制数转换为十进制数 00001010B = ;10000000B = ; 0110B = ;0111B = 。 2,将下列为二进制数转换为十六进制数 11110000B = ;11111111B = ;10001000B = ;00001111B= 。 3,将十六进制数转换为二进制数 88H = ;37H = ; 55H = ;AAH = ; 39H = ;64H = 。 4,将十六进制数转换为十进制数 0AH = ;0FH = ;10H = ; FFH = ;11H = ;80H = . 5,将十进制数转换为二进制数 1 = ; 2 = ; 3 = ; 4 = ; 8 = ;16 = ;32 = ;64 = 。6,什么是BCD码,它与二进制(十六进制)数有什么区别?

单片机考试小程序

编程题 1,清零程序 将片外数据存储器中5000h~500ffh单元全部清零 ORG OOOOH MOV DPTR, #5000H MOV R0,#00H CLR A LOOP: MOVX @DPTR,A INC DPTR DJNZ RO,LOOP HERE: SJMP HERH 2.试着编写程序,查找在内部 RAM的20h~40h单元中出现00h这一数据的次数将查到的结果存入41h单元 ORG 0000H MOV R0,#20H MOV R1,#21H MOV 41H,#00H LOOP: CJNE @RO,#00H,NEXT INC 41H NEXT: INC R0 DJNZ RI,LOOP HERE: SJMP HERE 3查找在内部RAM的30h~50单元中是否有0AAH这一数据,若有则将51H单元置为01H;若未找到;则将51H单元置为00H. ORG 0000H MOV R0,#30H MOV R1,#21H LOOP: CJNE @R0,0AAH,NEXT MOV 51H,#01H SJMP HERE NEXT: INC R0 DJNZ R1,LOOP MOV 51H,#00H HERE: SJMP HERE 4编写程序功能为把1000H开始的外部RAM单元中的数据送到内部RAM50H开始的单元中,数据的个数存放在了内部RAM60H单元。 ORG 0000H MOV DPTR #1000H MOV R0,#50H MOV R1,60H LOOP: MOVX A,@DPTR MOV 50H,A INC DPTR INC R0

DJNZ RI,LOOP HERE: SJMP HERE 5.编写请将ROM3000H单元内容送R7. ORG 0000H MOV DPTR, #3000H CLR A MOVC A ,@A+DPTR MOV R7,A END 6.片外RAM2000H单元内容送到片外RAM1000H的单元中。 ORG 0000H MOV DPTR,#2000H MOVX A,@DPTR MOV DPTR,,#1000H\ MOVX @DPTR,A 7.锯齿形波: ORG 2000H START: MOV R0,#0FEH MOV A,#00H LOOP: MOVX @R0,A INC A SJMP LOOP 8三角形波 ORG 2000H START MOV R0,#0FEH MOV A,#00H UP: MOVX @R0,A INC A JNZ UP DOWN: DEC A MOVX @DPTR,A JNZ DOWN SJMP UP

单片机第四次作业

1. #include"reg52.h" #define uchar unsigned char #define uint unsigned int sbit BUZZ=P1^6; sbit led0=P0^0; sbit ADDR0=P1^0; sbit ADDR1=P1^1; sbit ADDR2=P1^2; sbit ADDR3=P1^3; sbit ENLED=P1^4 uchar a,n=0,RKEY=0; void main() { ENLED=0; ADDR3=1; ADDR2=1; ADDR1=1; ADDR0=0; EA=1; ET0=1; TMOD=0X21; TH0=(65536-9216)/256; TL0=(65536-9216)%256; TH1=253; TL1=253; PT1=1; TR1=1; REN=1; SM0=0; SM1=1; ES=1; BUZZ=0; led0=1; while(1) { if(RKEY==1) { RKEY=0; if(a==1) { TR0=1;

while(1) { if(n==20){n=0;BUZZ=~BUZZ;led0=~led0;} if(RKEY==1){TR0=0;break;} } } else if(a==2) { TR0=1; while(1) { if(n==10){n=0;BUZZ=~BUZZ;led0=~led0;} if(RKEY==1){TR0=0;break;} } } else if(a==3) { TR0=1; while(1) { if(n==5){n=0;BUZZ=~BUZZ;led0=~led0;} if(RKEY==1){TR0=0;break;} } } else {BUZZ=0;led0=~led0;} } } } void Interrupt_TRXD() interrupt 4 { RI=0; a=SBUF; RKEY=1; } void Interrupt_timer0() interrupt 1 { TH0=(65536-9216)/256; TL0=(65536-9216)%256; n++; } 2. #include"reg52.h"

单片机C语言编程实例

单片机C语言编程实例 前言 INTEL公司的MCS-51单片机是目前在我国应用得最广泛的单片机之一.随着 单片机应用技术的不断发展,许多公司纷纷以51单片机为内核,开发出与其兼容的 多种芯片,从而扩充和扩展了其品种和应用领域。 C语言已成为当前举世公认的高效简洁而又贴近硬件的编程语言之—。将C语言向单片机上的移植,始于20世纪80年代的中后期。经过十几年的努力,C语言终于成为专业化单片机上的实用高级语言。用C语言编写的8051单片机的软件,可以大大缩短开发周期,且明显地增加软件的可读性,便于改进和扩充,从而研制出规模更大、性能更完善的系统。因此,不管是对于新进入这一领域的开发者来说,还是对于有多年单片机开发经验的人来说,学习单片机的C语言编程技术都是十分必要的。. C语言是具有结构化.模块化编译的通用计算机语言,是国际上应用最广.最多的计算语言之一。C51是在通用C语言的基础上开发出的专门用于51系列单片机编程的C语言.与汇编语言相比,C51在功能上.结构上以及可读性.可移植性.可维护性等方面都有非常明显的优势。目前 最先进、功能最强大、国内用户最多的C51编译器是Keil Soft ware公司推出的KeilC51。第 一章单片机C语言入门 1.1建立您的第一个C项目 使用C语言肯定要使用到C编译器,以便把写好的C程序编译为机器码, 这样单片机才能执行编写好的程序。KEIL uVISION2是众多单片机应用开发软 件中优秀的软件之一,它支持众多不同公司的MCS51架构的芯片,它集编辑, 编译,仿真等于一体,同时还支持PLM、汇编和C语言的程序设计,它的界面 和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真 方面也有很强大的功能。因此很多开发51应用的工程师或普通的单片机爱好者,都对它十分喜欢。 以上简单介绍了KEIL51软件,要使用KEIL51软件,必需先要安装它。KEIL51是一个商业的软件,对于我们这些普通爱好者可以到KEIL中国代理周 立功公司的网站上下载一份能编译2K的DEMO版软件,基本可以满足一般的个

(完整版)郭天祥_十天学通单片机_所有课后作业+答案

lesson1 对照TX-1C单片机学习板原理图写程序 用位操作和总线操作两种方法完成以下题目 1.熟练建立KEIL工程 2.点亮第一个发光管. 3.点亮最后一个发光管 4.点亮1、3、5、7 5.点亮二、四、五、六 6.尝试让第一个发光管闪烁 7.尝试设计出流水灯程序 =========================================================== =========================================================== lesson2 第一个发光管以间隔200ms闪烁 8个发光管由上至下间隔1s流动,其中每个管亮500ms,灭500ms,亮时蜂鸣器响,灭时关闭蜂鸣器,一直重复下去。 8个发光管来回流动,第个管亮100ms,流动时让蜂鸣器发出“滴滴”声。 用8个发光管演示出8位二进制数累加过程。 8个发光管间隔200ms由上至下,再由下至上,再重复一次,然后全

部熄灭再以300ms间隔全部闪烁5次。重复此过程。 间隔300ms第一次一个管亮流动一次,第二次两个管亮流动,依次到8个管亮,然后重复整个过程。 间隔300ms先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8个全部闪烁3次;关闭发光管,程序停止。 =========================================================== =========================================================== lesson3 1、利用定时/计数器T0从P1.0输出周期为1s的方波,让发光二极管以1HZ闪烁,设晶振频率为12MHz。。 2、利用定时/计数器T1产生定时时钟,由P1口控制8个发光二极管,使8个指示灯依次一个一个闪动,闪动频率为10次/秒(8个灯依次亮一遍为一个周期),循环。 3、同时用两个定时器控制蜂鸣器发声,定时器0控制频率,定时器1控制同个频率持续的时间,间隔300ms依次输出1,10,50,100,200,400,800, 1k(hz)的方波。 4、用定时器以间隔500MS在6位数码管上依次显示0、1、2、3….C、 D、E、F,重复。 lesson4

单片机选修课考试答案

1、在下列情况EA引脚应接何种电平? (1)只有片内ROM,EA=(1 ); (2)只有片外ROM,EA=( 0 ); (3)有片内、片外ROM,EA=(1 ); (4)有片内ROM但不用,而用片外ROM,EA=(0 )。 2、8031单片机复位后,R4所对应的存储单元的地址为(14 ),因上电复位时,PSW=(00H )。这时当前的工作寄存器区是(0 )组工作寄存器区。 3、内RAM中,位地址为30H的位,该位所在字节的字节地址为( 26H )。 4、MCS-51的复位条件是在RST端保持至少2个机器周期的高电平。复位后,CPU从(000H )单元开始执行程序,PC=(000H ),SP=(07H ),PSW=( 00H1)。 5、若PSW的内容为18H,则工作寄存器R0的地址是(18 )H。 1、假定外部数据存储器2000H单元的内容为80H,0000H单元的内容为90H,执行下列指令后,累加器A 中的内容为(80H)。 MOV P2,#20H MOV R0,#00H MOVX A,@ R0 2、假定(SP)=60H,(ACC)=30H,(B)=70H,执行下列指令: PUSH ACC PUSH B 后,SP的内容为(62H),61H单元的内容为(30H),62H单元的内容为(70H)。 3、设A=01××××××B,×表示随机状态,为1或0,执行指令ORL A,#03H后A=(01××××11B )。 4、假定(A)=0FFH,(R3)=0FH,(30H)=0F0H,(R0)=40H,(40H)=00H。执行指令: INC A INC R3 INC 30H INC @R0 后,累加器A的内容为(00H),40H的内容为(01H)。 5、在MCS—51中PC和DPTR都用于提供地址,但PC是为访问(程序)存储器提供地址,而DPTR 是为访问(数据)存储器提供地址。 1、当定时/计数器选定为定时器方式时,是对片内机器周期脉冲数进行计数,选定为计数器方式时,是对 (片外脉冲)进行计数。 2、2、设定时器T0为方式1定时,定时器T1为方式1计数,则工作方式控制字TMOD=( 0x51 )。 3、设(TMOD)=0A5H,则定时器T0的状态是(定时方式2),定时器T1的状态是( 计数方式1 )。 4、MCS-51定时/计数器,当fosc=6MHZ时,最大定时为( 131.07ms ) fosc=12MHZ时,最大定时为( 65.5ms )。 5、定时器T0溢出标志位是( TF0),定时器T1溢出标志位是( TF1 )。 1、MCS-51的外部中断的触发方式有两种,分别(电平触发)和( 边沿触发)。 2、INT0 和INT1的中断标志分别是(IE1 )和(IE2 )。 3、51单片机的中断系统最多可以有(2 )个嵌套。 4、MCS-51系列单片机有(5)个中断源,中断分为2个(中断优先级),即 高优先级和低优先级,每个中断源的优先级都可以由(软件)来设定。 5、单片机中断系统的组成:它由(4)个与中断有关的(特殊功能寄存器)(TCON、SCON的相关位作中断源的标志位)、中断允许控制寄存器IE、(中断优先级管理(IP寄存器)和中断顺序查询逻辑电路等组成。 1、PSW=18H时,则当前工作寄存器是(D )。 (A)0组 (B)1组(C)2组(D)3组 2、在80C51中,要访问SFR使用的寻址方式为(A )。 (A)直接寻址(B)寄存器寻址(C)变址寻址(D)寄存器间接寻址 3、P1口的每一位能驱动(B )。 (A)2个TTL低电平负载有(B)4个TTL低电平负载 (C)8个TTL低电平负载有(D)10个TTL低电平负载 4、MCS-51的中断允许触发器内容为83H,CPU将响应的中断请求是(B ) (A) T1 (B) T0,T1 (C)T1,串行接口 (D)T0 5、存储器的地址范围是0000H-0FFFH,它的容量为(D )。 (A)1KB (B) 2KB (C) 3KB (D) 4KB 1、MOVX A,@DPTR指令中源操作数的寻址方式是(B) (A)寄存器寻址(B)寄存器间接寻址(C)直接寻址(D)立即寻址 2、ORG 0003H LJMP 2000H ORG 000BH LJMP 3000H 当CPU响应外部中断0后,PC的值是(B) (A) 0003H (B)2000H (C)000BH (D)3000H 3、LCALL指令操作码地址是2000H,执行完相子程序返回指令后,PC=(D )。 (A ) 2000H (B)2001H (C)2002H (D)2003H 4、51执行完MOV A,#08H后,PSW的一位被置位( D)。 (A)C (B)F0 (C)OV (D)P 5、下面条指令将MCS-51的工作寄存器置成3区(B) (A)MOV PSW,#13H (B)MOV PSW,#18H (C) SETB PSW.4 SETB PSW.3 (D) SETB PSW.3 CLR PSW.4 1、在MCS-51中,需要外加电路实现中断撤除的是( D ) (A)定时中断(B)脉冲方式的外部中断 (C)串行中断(D)电平方式的外部中断 2、中断查询,查询的是(B ) (A)中断请求信号(B)中断标志位 (C)外中断方式控制位(D)中断允许控制位 3、假定设置堆栈指针SP的值为37H,在进行子程序调用时把断点地址进栈保护后,SP的值为(D ) (A)6H (B)37H (C)38H (D)39H 4、执行返回指令时,返回的断点是(C ) (A)调用指令的首地址(B)调用指令的末地址

单片机重点作业题答案整理-图文

单片机重点作业题答案整理-图文 以下是为大家整理的单片机重点作业题答案整理-图文的相关范文,本文关键词为单片机,重点,作业,答案,整理,图文,第一章,给出,列有,号,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。 第一章 1.给出下列有符号数的原码、反码和补码(假设计算机字长为8位)。

+45-89-6+112 答:【+45】原=00101101,【+45】反=00101101,【+45】补=00101101【-89】原=11011001,【-89】反=10100110,【-89】补=10100111【-6】原=10000110,【-6】反=11111001,【-6】补=11111010【+112】原=01110000,【+45】反=01110000,【+45】补=011100002.指明下列字符在计算机内部的表示形式。 AsendfJFmdsv120 答:41h73h45h4eh64h66h4Ah46h6Dh64h73h76h31h32h30h3.什么是单片机? 答:单片机是把微型计算机中的微处理器、存储器、I/o接口、定时器/计数器、串行接口、中断系统等电路集成到一个集成电路芯片上形成的微型计算机。因而被称为单片微型计算机,简称为单片机。 4.单片机的主要特点是什么?答:主要特点如下: 1)在存储器结构上,单片机的存储器采用哈佛(harvard)结构2)在芯片引脚上,大部分采用分时复用技术 3)在内部资源访问上,采用特殊功能寄存器(sFR)的形式4)在指令系统上,采用面向控制的指令系统5)内部一般都集成一个全双工的串行接口6)单片机有很强的外部扩展能力 5.指明单片机的主要应用领域。 答:单机应用:1)工业自动化控制;2)智能仪器仪表;3)计算机外部设备和智能接口;4)家用电器 多机应用:功能弥散系统、并行多机处理系统和局部网络系统。

自制单片机烧写器

像我们这样搞电子的人,要的就是动手的乐趣。下面我们来介绍近期在网络上非常流行的USBasp下载线,因为现在的笔记本包括台式机都渐渐地舍弃了并口、串口;所以之前的并口或串口下载线已经不能再使用了,应该说是做个USBasp下载线是势在必行的,下面我们来介绍其制作的全过程。 图(1) 图1为原作者设计的原理图,为了便于制作我修改过某部分电路如图2,其功能一样。

图(2) 在制作之前首先要搞清楚几点: 第一、这个USB下载线本身就是一块AVR单片机,在制作过程中也必需对其进行程序下载才能运行。 第二、先得大概了解一下这个AVR单机机ATmega8的基本资料。这样才能对电路有个了解,从而便于调试。第三COM1是PC机与USB相接的端口,我们在焊接时一定要区分GND、VCC、D+、D-,下面图(3)是对应本次制作的USB端口的引脚功能。在焊接的之前务必搞清楚,否则会造成PC机端口的USB或下载给的ATmega8烧毁。

图(3)USB端口引脚功能 第四﹑最后我们来了解一下电路的结构。对应图2,其中JP1是选择下载时的速度是快速或慢速,当JP1接地时选择低速,否则为高速。对于选择快速还是慢是相对于被下载的单片机晶振时钟而言的。一般来讲,目标单片机与USBasp的ATmega8的时钟不能相差太远。而JP2是电源的选择,当短接时被下载的单片机选择USBasp供电,则否选择独立供电。切记:两者只能任选其一。LED2为ATmega8程序运行的指示灯,当其点亮时就证明USBasp运行正常。LED1为下载程序时的工作指示灯,当接收到上位机信号

时,此灯就会闪动。 图(4)制作的全部元器件 图(5_a)与图2对应的PCB板顶层

单片机作业及参考答案

习题1、BCD 码加法编程。 X 、Y 为4位压缩BCD 码,求 Z=X+Y 。 设X 存在片内RAM 40H 、41H 单元,Y 存在42H 、43H 单元,编程求 Z=X+Y ,并存入片内RAM 单元44H 、45H 、46H 。 ADB :MOV A ,40H ADD A ,42H DA A MOV 44H ,A MOV A ,41H ADDC A ,43H DA A MOV 45H ,A MOV A ,#0 ADDC A ,#0 MOV 46H ,A RET 习题2:编程求双字节减法。设X 、Y 存在片内 RAM 40H 起始单元,计算Z=X-Y 。 SUBD :CLR C MOV A ,40H SUBB A ,42H MOV 44H ,A MOV A ,41H SUBB A ,43H MOV 45H ,A MOV A ,#0 SUBB A ,#0 MOV 46H ,A RET 习题3:编程完成对DPTR 的减1操作. MOV A ,DPL CLR C SUBB A ,#1 MOV DPL ,A MOV A ,DPH SUBB A ,#0 MOV DPH ,A 习题4:如何将累加器A 中的数据高4位清0,低位不变? ANL A ,#0FH 习题5:如何将寄存器R2中的数据奇数位取反,偶数位不变? MOV A ,R2 XRL A ,#10101010B MOV R2,A ;取被加数低字节 ;加上加数低字节 ;BCD 十进制调整 ;保存和的低字节 ;取被加数高字节 ;加上加数高字节 ;BCD 十进制调整 ;保存和的高字节 ;求高字节进位 ;子程序结束 ;清借位标志 ;取被减数低字节 ;减去减数低字节 ;保存差的低字节 ;取被减数高字节 ;减去减数高字节 ;保存差的高字节 ;保存差的借位标志 ; ;子程序结束

单片机C语言小程序

单片机C语言小程序 #include #include #define V AR XBYTE[0x00] /*V AR为外部位址0000*/ #define read 0 /*93c46读取的识别码READ=0*/ #define write 2 /*93c46写入的识别码WRITE=2*/ #define ewen 4 /*93C46写致能的识别码EWEN=4*/ #define ewds 6 /*93C46写除能的识别码EWDS=6*/ #define cs INT0 /*93C46 CS接脚=8051 RD P3.2*/ #define clk INT1 /*93C46 CLK接脚=8051 WR P3.3*/ #define di T0 /*93C46 DI接脚=8051 T1 P3.4*/ #define d0 T1 /*93C46 DO接脚=8051 T0 P3.5*/ #define LOW 0x49 /*存放测试温度的下限值*/ #define HIGH 0x51 /*存放测试温度的上限值*/ bit FLAG0=0; /*宣告TIMER0响应旗号*/ //外接工业专用温度传感器时,目前设置测量温度为0-99度: static const char tab[13]={0x3a,0x53,0x6f,0x8a,0xa3, /*0度,10度,20度,30度,40度*/ 0xB8,0xC8,0xD5,0xDE,0xE5, /*50度,60度,70度,80度,90度*/ 0xEA,0xEE}; /*100度,110度*/ //使用板上AD590温度传感器时,目前设置测量温度为0-99度: //static const char tab[13]={0x88,0x8d,0x92,0x97,0x9c, /*0度,10度,20度,30度,40度,*/ // 0xa1,0xa6,0xab,0xb0,0xb5, /*50度,60度,70度,80度,90度*/ // 0xba,0xc0}; /*100度,110度*/ char data1[2]; char C,S,k=0; char MEP[7]; /*显示器值存放阵列*/ //MEP[0]=数码管最低位显示值,温度指示小数点后位 //MEP[1]=数码管次低位显示值,温度指示个位数 //MEP[2]=数码管高位显示值,温度指示十位数 //MEP[3]=数码管最低位显示值,功能显示目前定为1,2,3,4,5 //MEP[4]= //MEP[5]=暂放置温度显示值,高4位为温度指示十位数值,低4位为温度指示个位数值//MEP[6]=在温度显示与电压调整副程式中,将测量值C暂存MEP[6]中 unsigned char combuf[10]; unsigned char ADR46,CH,CL,m,C1,C2; /*ADR46,93C46位址,CH高位元组,CL低*/ int sec,sec1; char ptr=0,ptr1=0x10,psr=0; /*ptr显示器值存放阵MEP[]指标,ptr1显示器扫描指标*/ char count=100,sb=0; void delay (unsigned int value) /*延时副程式*/ { while (value!=0) value--; /*10us延时*/ } void COMP(); /*宣告比较现在温度与设定温度副程式*/ void SET();

作业《单片机控制系统的编程与应用》习题与答案

一.选择 题 1. 89S51的内部程序存储器与数据存储器的容量各为多少? C P10 (A)64KB 、128B (B)4KB 、64KB (C)4KB 、128B (D)8KB 、256B 2. 下列哪个是 89S51多出的功能? B (A )存储加倍(B )具有 WDT 功能 ( C )多一个八 /输出端口 (D )多一个串行口 3. 在 DIP40 封装的 8051 芯片里,复位 RESET 引脚编号是多少? A (A )9 (B)19 (C)29 (D)39 4. 在 DIP40 封装的 8051 芯片里,接地引脚与电源的引脚编号是多少? C (A )1、21 (B )11、31 (C )20、40 (D )19、39 5. 下列那个软件同时提供 8051的汇编C 语言器? A (A)Keil u Vision (B)Java C++ (C)Dephi (D)Visual C++ 6. 在 12M H z 时的 8051系统里,一个机器周期? C (A)1ms (B)12us (C)1us (D)12ms 7. 在 8051 芯片里,哪个引脚是控制使用内部程序存储器,还是外部程序存储 器?B (A )XTAL1 (B) EA (C) PSEN (D)ALE 8. 下列哪个不是 8051所提供的寻址模式? D (A )寄存器寻址 (B )间接寻址 (C )直接寻址 (D )独立寻址 9. 下列哪个寄存器是 8051内的 16 位寄存器? C (A )ACC (B)C (C) PC (D)R7 10. 开发微型计算机所使用的在线仿真器的简称是什么? A (A )ISP (B)USP (C)ICE (D)SPI 11. 在 Keil u Vision3 里开发 8051 程序的第一步是什么? D (A )打开新的项目文件 (B )调试与仿真 (C )组建程序 (D )产生 执行文件 12. 在 Keil u Vision3 里,若要打开项目,应如何操作? D (A )运行 File / New 命令 (B )运行 File / New Project 命令 (C )运行 Project / New 命令 (D )运行 Project / New Project ? 命令 13. 进行调试 /仿真时,若想/输出端口的状态,可以如何处理? D (A )运行 Peripherals/I/O-Port 命令 (B )运行 View/Ports 命令 (C )运行 Edit/Ports 命令 (D )单击按钮 14. 下列哪项不是 Keil C 的预处理命令? C (A )#include (B)#define (C)#exit (D)#if 15. 下列哪项不是 Keil C 的数据类型? B (A )void (B )string (C)char (D)float 16. 在 805 1 /输 出 端 口 里 有上拉电阻? A (A) P0 (B) P1 (C) P2 (D) P3 17. 在 Keil C 的程序里,若要指定 Port0 的 bit3,如何编写程序? C (A )P0.3 (B) Port0.3 (C) P0^3 (D )Port0^3 1

单片机各种烧写文件格式简介

各种烧写文件格式简介-ELF Hex Bin 一,ELF Executable and linking format(ELF)文件是x86 Linux系统下的一种常用目标文件(object file)格式,有三种主要类型: Executable and linking format(ELF)文件是x86 Linux系统下的一种常用目标文件(object file)格式,有三种主要类型: (1)适于连接的可重定位文件(relocatable file),可与其它目标文件一起创建可执行文件和共享目标文件。 (2)适于执行的可执行文件(executable file),用于提供程序的进程映像,加载的内存执行。 (3)共享目标文件(shared object file),连接器可将它与其它可重定位文件和共享目标文件连接成其它的目标文件,动态连接器又可将它与可执行文件和其它共享目标文件结合起来创建一个进程映像。 ELF文件格式比较复杂。 二,hex 什么是Intel HEX格式? Intel HEX文件是记录文本行的ASCII文本文件,在Intel HEX文件中,每一行是一个HEX记录 由十六进制数组成的机器码或者数据常量,Intel HEX文件经常被用于将程序或数据传输 存储到ROM.EPROM,大多数编程器和模拟器使用Intel HEX文件. 记录格式 一个Intel HEX文件可以包含任意多的十六进制记录,每条记录有五个域,下面是一个记录的格式. :llaaaatt[dd...]cc 每一组字母是独立的一域,每一个字母是一个十六进制数字,每一域至少由两个十六进制数字组成,下面是字节的描述. :冒号是每一条Intel HEX记录的开始 ll 是这条记录的长度域,他表示数据(dd)的字节数目. aaaa 是地址域,他表示数据的起始地址 <如果是数据记录,这表示将要烧录的这条记录中的数据在EPROM中的偏移地址,

单片机课后作业

单片机课后作业

第一章习题 1.将123.375转换为二进制和十六进制数。 2.将395写成BCD码形式。 3.求下列数的原码和补码: 1)+85 2)-85 4.求下列补码的真值: 1)01011011B 2)11101101B

第二章习题 1.根据功能和用途,89C52内部RAM可分为几个区域?各有多少字节?字节地址为多少? 2.请写出90H所对应的所有可能的物理单元。 3.请分别写出如下位地址所在的RAM单元地址或SFR名: 1)07H 2)10H 3)50H 4)70H 5)80H 6)90H 7)D0H 8)E0H 4.51系列单片机工作寄存器有几组?如何判断CPU当前使用哪一组寄存器? 5.请指出89C52在f osc=6MHz、12MHz、24MHz时的一个机器周期时间。 6.中断入口的含义是什么?写出89C52的中断入口地址。 7.某单片机应用系统有下列4种中断:INT0、INT1、T0和T1。要求的优先级顺序从高到低依次为:T0→INT1→INT0→T1。请设置IE和IP的相关位,以确保达到上述要求。

第三章习题 1.51系列单片机的指令系统有哪几种寻址方式?对内部RAM的00H—7FH单元操作有哪些寻址方式?对SFR操作有哪些寻址方式? 2.写出下列功能对应的数据传送指令: 1)(R0)→A;(40H)→A;((R0))→A;80H→A 2)(78H)→R0;(A)→R6;88H→R7 3)(A)→50H;(70H)→P1;(R3)→P1;80H→P1 4)(A)→(R0);(30H)→(R0);30H→(R0) 5)8000H→DPTR 6)(A)→栈;(DPH)→栈;栈→DPH;栈→A 7)(A)((R0));(A)0~3((R0))0~3 3.写出下列各条指令的功能: 1)MOV A,@R1;MOV A,50H;MOV A,R1 2)MOV R7,30H;MOV R4,A;MOV R7,#3 3)MOV 50H,A;MOV P1,40H;MOV P1,R3 4)MOV @R1,A;MOV @R1,30H;MOV @R1,#50H 5) MOV DPTR,#9000H 6) PUSH ACC;PUSH B;POP DPL 7)XCH A,@R1;XCHD A,@R1

单片机c程序编写

单片机C语言编程基础 时间:2011-05-01 22:47:26来源:作者: 单片机的外部结构: 1、DIP40双列直插; 2、P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平) 3、电源VCC(PIN40)和地线GND(PIN20); 4、高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位) 5、内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍) 6、程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中的程序) 7、P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 单片机内部I/O部件:(所为学习单片机,实际上就是编程控制以下I/O部件,完成指定任务) 1、四个8位通用I/O端口,对应引脚P0、P1、P2和P3; 2、两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1) 3、一个串行通信接口;(SCON,SBUF) 4、一个中断控制器;(IE,IP) 针对AT89C52单片机,头文件AT89x52.h给出了SFR特殊功能寄存器所有端口的定义。教科书的160页给出了针对MCS51系列单片机的C语言扩展变量类型。 单片机C语言编程基础 1、十六进制表示字节0x5a:二进制为01011010B;0x6E为01101110。 2、如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。 3、++var表示对变量var先增一;var—表示对变量后减一。 4、x |= 0x0f;表示为x = x | 0x0f; 5、TMOD = ( TMOD & 0xf0 ) | 0x05;表示给变量TMOD的低四位赋值0x5,而不改变TMOD的高四位。 6、While( 1 ); 表示无限执行该语句,即死循环。语句后的分号表示空循环体,也就是{;} 在某引脚输出高电平的编程方法:(比如P1.3(PIN4)引脚) #include //该头文档中有单片机内部资源的符号化定义,其中包含P1.3 void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 { P1_3 = 1; //给P1_3赋值1,引脚P1.3就能输出高电平VCC While( 1 ); //死循环,相当LOOP: goto LOOP; } 注意:P0的每个引脚要输出高电平时,必须外接上拉电阻(如4K7)至VCC电源。 在某引脚输出低电平的编程方法:(比如P2.7引脚) #include //该头文档中有单片机内部资源的符号化定义,其中包含P2.7 void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 { P2_7 = 0; //给P2_7赋值0,引脚P2.7就能输出低电平GND While( 1 ); //死循环,相当LOOP: goto LOOP; } 在某引脚输出方波编程方法:(比如P3.1引脚) #include //该头文档中有单片机内部资源的符号化定义,其中包含P3.1 void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口 {

相关主题