搜档网
当前位置:搜档网 › MSP430单片机深入学习笔记

MSP430单片机深入学习笔记

MSP430单片机深入学习笔记
MSP430单片机深入学习笔记

复位

1.POR信号只在两种情况下产生:

?微处理器上电。

?RST/NMI管脚被设置为复位功能,在此管脚上产生低电平时系统复位。

2.PUC信号产生的条件为:

?POR信号产生。

?看门狗有效时,看门狗定时器溢出。

?写看门狗定时器安全健值出现错误。

?写FLASH存储器安全键值出现错误。

3.POR信号的出现会导致系统复位,并产生PUC信号。而PUC信号不会引起POR信号的产生。系统复位后(POR之后)的状态为:

?RST/MIN管脚功能被设置为复位功能。

?所有I/O管脚被设置为输入。

?外围模块被初始化,其寄存器值为相关手册上注明的默认值。

?状态寄存器(SR)复位。

?看门狗激活,进入工作模式。

?程序计数器(PC)载入0xFFFE(0xFFFE为复位中断向量)处的地址,微处理器从此地址开始执行程序。

4.典型的复位电路有以下3种:

(1)由于MSP430具有上电复位功能,

因此,上电后只要保持RST/NMI(设置

为复位功能)为高电平即可。通

常的做法为,在RST/NMI管脚接100k?

的上拉电阻,如图1-5(a)所示。

(2)除了在RST/NMI管脚接100k?的

上拉电阻外,还可以再接0.1μF的电

容,电容的另一端接地,可以使复位更

加可靠。如图1-5(b)所示。

(3)由于MSP430具有极低的功耗,如

果系统断电后立即上电,则系统中电

容所存储的电荷来不及释放,此时系

统电压不会下降到最低复位电压以下,

因而MSP430不会产生上电复位,同时

RST/NMI管脚上也没有足够低的电平

使MSP430复位。这样,系统断电后立

即上电,MSP430并没有被复位。为了

解决这个问题,可增加一个二极管,这

样断电后储存在复位电容中的电荷就

可以通过二极管释放,从而加速电容

的放电。二极管的型号可取1N4008。

如图1-5(c)所示。

系统时钟

振荡器:

1.DCO 数控RC振荡器,位于芯片内部。不用时可以关闭

2.LFXT1 可以接低频振荡器,典型的如32.768kHz的钟表振荡器,此时振荡器不需要接负载电容。也可以接450kHz~8MHz的标准晶体振荡器,此时振荡器需要接负载电容。

3.XT2 接450kHz~8MHz的标准晶体振荡器,此时振荡器要接负载电容,不用时可

以关闭。

通常低频振荡器用来降低能量消耗,例如使用电池的系统。高频振荡器用来对事件作出快速反应或者供CPU进行大量运算。DCO的振荡频率会受周围环境温度和MSP430工作电压的影响而产生变化,并且同一型号的芯片所产生的频率也不相同。DCO的调节功能可以改善它的性能。

DCO的调节分为以下3步:

(1)选择BCSCTL1.RSELx确定时钟的标称频率。

(2)选择DCOCTL.DCOx在标称频率基础上分段粗调。

(3)选择DCOCTL.MODx的值进行细调。

MSP430定义了3种时钟信号,分别为:

(1)MCLK 系统主时钟。除了CPU运算使用此时钟信号外,外围模块也可以使用。MCLK可以选择任何一个振荡器产生的时钟信号并进行1、2、4、8分频作为其信号源。

(2)SMCLK 系统子时钟。外围模块可以使用,并且在使用之前可以通过各模块的寄存

器实现分频。SMCLK可以选择任何一个振荡器产生的时钟信号并进行1、2、4、8分频作为其信号源。

(3)ACLK 辅助时钟。外围模块可以使用,并且在使用之前可以通过各模块的寄存器

实现分频。ACLK只能由LFXT1进行1、2、4、8分频作为其信号源。

PUC结束时,MCLK和SMCLK的信号源为DCO,DCO的振荡频率约为800kHz(详见

相关手册)。ACLK的信号源为LFXT1。

例3.4 设置MCLK 的时钟8 分频。下列4 条代码均可实现该功能。

BCSCTL2 |= 0x30; //人肉记忆+数脚趾头,原始社会才干的事!

BCSCTL2 |= BIT5+BIT4; //需记忆DIVMx在BSCTL中的位置,不推荐!BCSCTL2 |= DIVM1+DIVM0; //由两项组成,看起来不直观,凑合!

BCSCTL2 |= DIVM_3; //简洁明了,力荐!

在使用按位或操作符“|=”配置寄存器时,要注意宏定义之间的“叠加”效应。重新用宏定义配置寄存器前,一定要先清零。(此外,极少数寄存器上电复位后默认值不是0,要特别注意。)

例3.5 先设定MCLK 分频为2,一段时间后改为4 分频。

错误的代码:

BCSCTL2 |= DIVM_1; //这确实是2 分频

delay( );

BCSCTL2 |= DIVM_2; //因为|=赋值的原因,这实际上是8 分频,请自行面壁想清楚

正确的代码:

BCSCTL2 |= DIVM_1; // 2 分频

delay( );

BCSCTL2 &= ~( DIVM_0+ DIVM_1+ DIVM_2+ DIVM_3); // 预先把全部相关控制位置0 BCSCTL2 |= DIVM_2; //此时再用|=设置才不出错

相关控制位全置0 还可写成:

BCSCTL2 &= ~DIVM_3 或BCSCTL2 &=~(DIVM0+DIVM1)

低功耗模式

上电和外部复位信号产生POR信号,POR信号会引起PUC信号。看门狗激活时,定时器溢出和安全键值错误也会引起PUC信号。PUC信号结束后,MSP430进入AM状态。在AM 状态程序可以选择进入任何一种低功耗模式,然后在适当的时机,由外围模块的中断使CPU 退出低功耗模式。

LPM0(主力休眠,先头部队工作)和LPM3(主力和先头部队都休眠,仅留警戒哨兵)最常用,LPM4 则当关机使用。

中断

MSP430可以在没有事件发生时进入低功耗状态,事件发生时,通过中断唤醒CPU,事件处理完毕后,CPU再次进入低功耗状态。

MSP430的中断分为:系统复位、不可屏蔽中断、可屏蔽中断。系统复位前面已经作过介绍,其中断向量为0xFFFE。不可屏蔽中断向量为0xFFFC,产生不可屏蔽中断的原因如下:(1)RST/NMI管脚功能选择为NMI时,RST/NMI管脚上产生一个上升沿或者下降沿(具

体是上升沿还是下降沿由寄存器WDTCTL中的NMIES位决定)。NMI中断可以用WDTCTL

中的NMIIE位屏蔽。需要注意的是,当RST/NMI管脚功能选择为NMI时,不要让RST/NMI 管脚上的信号一直保持在低电平。原因是如果发生了PUC,则RST/NMI管脚的功能被初始化为复位功能,而此时它上面的信号一直保持低电平,使CPU一直处于复位状态,不能正常工作。

(2)振荡器失效中断允许时,振荡器失效。

(3)FLASH存储器的非法访问中断允许时,对FLASH存储器进行了非法访问。

不可屏蔽中断可由各自的中断允许位禁止或打开。当一个不可屏蔽中断请求被接受时,相应的中断允许位自动复位。退出中断程序时,如果希望中断继续有效,则必须用软件将相应中断允许位置位。

中断使用的步骤:

1)配置子模块中断相关的寄存器,比如外部中断的上升沿触发还是下降沿触发,定时

中断的计数方式和定时值。

2)依模板写中断服务子函数框架,添加中断后要干什么的代码(事件处理函数)。

3)使能子模块的中断,使能总中断。

4)一旦中断发生,CPU 停下主函数的活,并标记位置。进入中断服务子函数里干活,完事后回到主函数标记位置处继续干活。

我们来看MSP430 的中断子函数模板,加粗斜体部分是允许用户“创意”的地方,其他则是固定格式。其中,PORT1_VECTOR 是中断向量表中的地址宏定义,直接决定了这个中

断子函数是响应哪个中断源。PORT1_ISR 是中断子函数名,这个最好按标准写法取名字,便

于理解。中断向量表和标准的中断子函数名可见头文件

在MSP430 单片机中,中断资源是比较“宝贵的”,很多中断都是共用一个“中断向量入口”。比如上面写的是P1 口的中断服务子函数,当P1 的8 个IO 口任何一个检测到中断

事件(上升沿或下降沿),就会进入中断子函数。我们需要在子函数里,查询中断标志位

#pragma vector = PORT1_VECTOR

__interrupt void PORT1_ISR(void)

{

//中断后想干的事写这里;

}

LaunchPad 口袋实验平台—MSP-EXP430G2 篇

50

(特殊功能寄存器),判断一下到底是哪个IO 口“出事”了。

& 按位与, | 按位或, ^ 按位异或

AND (位与&) OR ( 位或| ) XOR ( 位异或^ )

1 & 1 = 1 1 | 1 = 1 1 ^ 1 = 0

1 & 0 = 0 1 | 0 = 1 1 ^ 0 = 1

0 & 1 = 0 0 | 1 = 1 0 ^ 1 = 1

0 & 0 = 0 0 | 0 = 0 0 ^ 0 = 0

C语言提供的位运算符列表:

运算符含义描述

& 按位与如果两个相应的二进制位都为1,则该位的结果值为1,否则为0

| 按位或两个相应的二进制位中只要有一个为1,该位的结果值为1

^ 按位异或若参加运算的两个二进制位值相同则为0,否则为1

~ 取反~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0

<< 左移用来将一个数的各二进制位全部左移N位,右补0

>> 右移将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0

写位操作:

在对某字节使用“=”进行写操作时,所有位的值都将被改变。如果先将原字节读出来,再使用“按位”操作符对原字节进行赋值,则可“等效”实现对单个位的写操作。

将P1.0 置1、P1.1 置0、P1.2 取反,不影响其他位。

P1OUT |= 0x01; P1OUT |= BIT0; //“按位或”,相当于置1

P1OUT &= ~0x02; P1OUT &= ~BIT1; //取反后再“按位与”,相当于置0 P1OUT ^= 0x04; P1OUT ^= BIT2;//“按位异或”,相当于取反

也可以用加号对多位同时操作。

将P1.0、P1.1、P1.2 均置1,不影响其他位。

P1OUT |= BIT0+BIT1+BIT2; //可用加法进行批量设置

读位操作:

读位操作主要是通过if 语句判断的方法得到的。同样,这种变通的办法不意味着

MSP430 单片机可以对位进行读取,这种方法同样需要对1 个字节的8 位都操作。Eg:将P2.0 的输出设置成与P1.1 输入相反,读取P1.0 状态到变量Temp。unsigned char Temp=0;

if((P1IN&BIT1)==0) P2OUT |= BIT0; //读P1.1 写P2.0

else P2OUT &= ~BIT0;

if(P1IN&BIT0) Temp=1; //读P1.0 写Temp

else Temp=0;

寄存器配置小结

1)一般情况下,均使用宏定义去配置寄存器,这样做省事省力,可读性好。

2)深刻理解“|=”对寄存器赋值的效果,先清0 后赋值,避免误操作。

3)提前查阅头文件,尽量使用组合宏定义配置寄存器。

4)对于由变量决定的寄存器配置,应使用移位后的变量直接赋值。

文件管理

什么是文件管理?就是不要在main.c 中写下所有的代码,而应该将大的程序划分为小的

c 文件。

1) 1 个main.c 写下全部代码是最容易导致“亲妈都认不出来”的情况。

2)我们从一个初学者开始,陆陆续续会调试各种片内和片外的设备,会积累各种各样

的代码。不管是敝帚自珍还是独孤求败,重复写同样的代码总是令人身心疲惫的事

情。

3)初学者最容易想到的是事后用复制粘贴的方法利用原代码,这是非常效率低下而且

容易出错的。

4)正确的做法是,当我们写代码的时候,先就考虑这段代码有没有可能在别的地方能

用到,然后分开独立写 c 文件,这样就可以有效准确利用原有代码。

如何有效进行文件管理呢?

1)按功能模块划分c 文件,比如片内的时钟、定时器、UART 收发器、Flash 控制器、ADC 模数转换器、片外的12864 液晶、矩阵键盘,可以分别设为System_clock.c、

Timer_A.c、UART.c、Flash.c、ADC10.c、LCD.c、Key.c。

2)将隶属于各模块的代码函数都放进各自的c 文件中。

3)建立与c 文件同名的h 头文件,在h 文件中声明可能被调用到的函数。

4)在main.c 中包含h 头文件,就可以使用外部c 文件中的函数了。

例3.8 建一个Motor.c 文件,在里面编写一个启动电机函数Motor_ON( )和一个停止电机

函数Motor_OFF( ),并编写头文件。

Motor.c 文件

void Motor_ON( )

{

P1OUT |=BIT0;

}

void Motor_OFF ()

{

P1OUT &=~BIT0;

}

Motor.h 文件

extern Motor_ON( );

extern Motor_OFF ( );

有些编译器支持直接在h 头文件中写程序代码。无论编译器是否支持,都不建议这样

做,分开写c 文件和h 头文件可以让复杂程序的代码更易读,我们后面会再谈这个问题。

系统时钟

void BCSplus_init(void)

{

BCSCTL2 = SELM_0 + DIVM_0 + DIVS_0; // 复位默认值,此行代码可省略

if (CALBC1_1MHZ != 0xFF) {

DCOCTL = 0x00;

BCSCTL1 = CALBC1_1MHZ; /* Set DCO to 1MHz */

DCOCTL = CALDCO_1MHZ;

}

BCSCTL1 |= XT2OFF + DIVA_0; // 复位默认值,此行代码可省略

BCSCTL3 = XT2S_0 + LFXT1S_2 + XCAP_1; // 设为内部低频振荡器

}

直接配置System Clock

前面我们学习了如何用Grace 配置时钟,其实对MSPG2553 单片机来说,MCLK 和SMCLK 基本就是使用DCO(没外部高频晶振可用)。有32.768kHz 手表晶振,则ACLK 选32.768Hz,没有就选12kHz 的VLO。所以,直接代码配置时钟也很方便,直接调用DCO 出厂校验参数即可。

例 4.1 将MSP430G2553 的时钟设置为MCLK 和SMCLK 均为8MHz,ACLK 设为32.768kHz

DCOCTL = CALDCO_8MHZ; // 调取出厂校准后存储在Flash中的参数BCSCTL1 = CALBC1_8MHZ; // BCSCTL3参数默认不用设

例4.2 将MSP430G2553 的时钟设置为MCLK 和SMCLK 均为16MHz,ACLK 设为内部低频

振荡器。

DCOCTL = CALDCO_16MHZ; // 调取出厂校准后存储在Flash中的参数

BCSCTL1 = CALBC1_16MHZ;

BCSCTL3 |= LFXT1S1; // 设为内部低频振荡器

例4.3 将MSP430G2553 的时钟设置为MCLK 和SMCLK 均为16MHz,ACLK 设为使用32.768kHz 晶振且4 分频。

DCOCTL = CALDCO_16MHZ; // 调取出厂校准后存储在Flash中的参数BCSCTL1 = CALBC1_16MHZ;

BCSCTL1 |= DIVA_2; // 补充修改BCSCTL 的DIVAx 位,4 分频

例4.4 将MSP430G2553 的时钟设置为MCLK4MHz,SMCLK 为2MHz,ACLK 设为使用32.768kHz 晶振。

DCOCTL = CALDCO_8MHZ; // 先设为8MHz

BCSCTL1 = CALBC1_8MHZ;

BCSCTL2 |= DIVM_1+DIVS_2; // 再对MCLK2 分频,SMCLK4 分频

中断服务函数

PORT1_ISR()属于中断服务子函数,由“vector = PORT1_VECTOR”中断向量调用,而与函数名“PORT1_ISR ”本身无关。虽然无论取什么函数名称都行,但是建议按照MSP430G2553.h 头文件中定义的中断服务子函数名称来命名,可在头文件中,查看“Interrupt Vectors (offset from 0xFFE0) ”部分。

程序进入中断服务子函数并不是万事大吉,一般需要考虑以下几件事情:

1)由于中断向量远比中断源少得多,所以大部分中断事件都是“共用”中断服务子函数。往往具体中断事件还需查询中断标志位来进一步确认。

2)有些时候,不仅要查询标志位,而且还要复杂的运算和判断才能确认中断事件,这就需要使用专门的“事件检测函数”来完成。

3)使用“事件检测函数”可以将代码“移出”中断服务子函数“集中放置”便于阅读,因为中断服务子函数内编写大段代码是编程“大忌”,非常容易造成“连亲妈都

认不出来”。此外“事件检测函数”也增强了代码的可移植性,因为事件检测的判

据往往可以重复使用。

4)一旦中断事件被“确认”,事件应对代码宜专门编写“事件处理函数”,而不应在

中断子函数中直接写代码。“事件处理函数”可以在“事件检测函数”中调用。

5)最后,弄清楚是否需要手动清除中断标志位。很多中断标志位必须手动清除,否则程序将会出现各种“无名肿痛”。

/****************************************************************************** * 名称:PORT1_ISR()

* 功能:响应P1口的外部中断服务

* 入口参数:无

* 出口参数:无

* 说明:P1.0~P1.8共用了PORT1中断,所以在PORT1_ISR()中必须查询标志位P1IFG才能知道具体是哪个IO引发了外部中断。P1IFG必须手动清除,否则将持续引发PORT1中断。* 范例:无

******************************************************************************/ #pragma vector = PORT1_VECTOR

__interrupt void PORT1_ISR(void)

{

//-----启用Port1事件检测函数-----

P1_IODect(); //检测通过,则会调用事件处理函数

P1IFG=0; //退出中断前必须手动清除IO口中断标志

}

事件检测函数

P1_IODect()就是上文提到的“中断事件检测函数”,专门用于判断是PORT1 的哪个IO 发生了中断(按键被按下)。这里我们同样先不去考虑具体代码原理是什么,总之这个函数正确实现了按键IO 的判断,并且调用了相应按键的“事件处理函数”。

/****************************************************************************** * 名称:P1_IODect()

* 功能:判断具体引发中断的IO,并调用相应IO的中断事件处理函数

* 入口参数:无

* 出口参数:无

* 说明:该函数兼容所有8个IO的检测,请根据实际输入IO激活“检测代码”。

* 本例中,仅有P1.3被用作输入IO,所以其他7个IO的“检测代码”没有被“激活”。* 范例:无

******************************************************************************/ void P1_IODect()

{

unsigned int Push_Key=0;

//-----排除输出IO的干扰后,锁定唯一被触发的中断标志位-----

Push_Key=P1IFG&(~P1DIR);

//-----延时一段时间,避开机械抖动区域-----

__delay_cycles(10000); //消抖延时

//----判断按键状态是否与延时前一致-

----if((P1IN&Push_Key)==0) //如果该次按键确实有效

{

//----判断具体哪个IO被按下,调用该IO的事件处理函数-----

switch(Push_Key)

// case BIT0: P10_Onclick(); break;

// case BIT1: P11_Onclick(); break;

// case BIT2: P12_Onclick(); break;

case BIT3: P13_Onclick(); break;

// cas e BIT4: P14_Onclick(); break;

// case BIT5: P15_Onclick(); break;

// case BIT6: P16_Onclick(); break;

// case BIT7: P17_Onclick(); break;

default: break; //任何情况下均加上default

}

}

}

事件处理函数

“事件处理函数”对于读懂程序代码非常重要,这意味着我们知道了一旦发生了某某事件,将要干什么。所有的“事件处理函数”加上main()函数,基本上就能读出程序的意图和思想了。在程序移植中,“事件处理函数”的内容往往是需要改变的。例如,P1.3 按键的“事件检测函数”可能无需改变,检测的判据方法是一样的。

神奇的GPIO

内部电阻在IO 处于输出状态是无法固定为上拉的(输出高电平时为上拉,输出低电平时为下拉)。

使用捕获模块的一般步骤:

1)把主定时器设为连续计数模式,这样就有最长的“刻度尺”可用。当“尺子”长度还不够的时候,可以设定尺子每溢出1 次,中断服务给全局变量Count+1,这样就能测量任意时间长度了。

2)把CCRx 模块对应的寄存器CAP 设为1,捕获模式。

3)选择CCRx 模块的捕获源寄存器CCISx,也就是具体单片机哪个管脚作为捕获输入口CCIx。

4)设定CMx 寄存器,决定是上升沿捕获还是下降沿,还是上升下降都捕获。

5)设定SCS 寄存器,决定是同步捕获还是异步捕获。咋一看起来,异步捕获响应要快,但是捕获后的有效数据是来自定时器的计数值,响应再快也超不过时钟的分辨率。所以一般均设为同步捕获,这样可以减小电路毛刺,避免竞争冒险。

6)标志位COV 为1 代表上次TACCRx 的数据没被取走,而又新来数据覆盖了TACCRx 的异常情况。前面提到的“爱什么时候读什么时候去读TACCRx”说的有些夸张,不能等下次捕获来临还不读取上次的捕获数据。

模式0:通过CCRx 模块各自的OUT 控制位控制TAx 输出,像操作普通IO 口那样。

一般用于程序预设定TAx 的电平。

模式1 和模式5:用于生成单稳态脉冲。

模式3 和模式7:用于产生PWM 信号。PWM 的频率由CCR0 的TACCR0 决定,PWM 的占空比由TACCRx 与TACCR0 的比值决定。

模式2 和模式6:用于产生带死区时间控制的互补PWM。

定时器A使用要点:

1. 时钟源及变化方式例TACTL = TASSEL_2 + MC_2其TASSEL定义了时钟源MC_x定义了CCR 计数器样变化(连续、循环等)

注:仅此句会让定时器A开始计数同时刻观察下TAR看看否变化

2.否允许断方式

CCTL0 = CCIE; (定时器A断允许)

CCR0 =+50000;(从当前CCR0时刻+50000下次断挂号时刻)

MSP430的中断优先级、打开关闭、中断嵌套

优先级顺序从高到低为:

PORT2_VECTOR (1 * 2u)

PORT1_VECTOR (4 * 2u)

TIMERA1_VECTOR (5 * 2u)

TIMERA0_VECTOR (6 * 2u)

ADC_VECTOR (7 * 2u)

USART0TX_VECTOR (8 * 2u)

USART0RX_VECTOR (9 * 2u)

WDT_VECTOR (10 * 2u)

COMPARATORA_VECTOR (11 * 2u)

TIMERB1_VECTOR (12 * 2u)

TIMERB0_VECTOR (13 * 2u)

NMI_VECTOR (14 * 2u)

RESET_VECTOR (15 * 2u)

当同时有多个中断来的时候才有优先级的考虑(优先级顺序可查看向量表)

有中断响应以后自动关闭总中断,这个时候即使来更高优先级的中断都不会响应

要中断嵌套的话,就必须在中断中打开总中断

msp430的指令中,DINT和EINT分别指关和开所有中断,也就是包涵P1IE、P2IE、WDTIE、TAIE、TBIE、ADC12IE、串口中断允许的所有中断允许位为“0”和为“1”。

实现中断嵌套需要注意以下几点:

1)430默认的是关闭中断嵌套的,除非你在一个中断程序中再次开总中断EINT;

2)当进入中断程序时,只要不在中断中再次开中断,则总中断是关闭的,此时来中断不管是比当前中断的优先级高还是低都不执行;

3)若在中断A中开了总中断,则可以响应后来的中断B(不管B的优先级比A高还是低),B执行完再继续执行A。注意:进入中断B后总中断同样也会关闭,如果B中断程序执行时需响应中断C,则此时也要开总中断,若不需响应中断,则不用开中断,B执行完后跳出中断程序进入A程序时,总中断会自动打开;

4)若在中断中开了总中断,后来的中断同时有多个,则会按优先级来执行,即中断优先级只有在多个中断同时到来时才起做用!中断服务不执行抢先原则。

5)对于单源中断,只要响应中断,系统硬件自动清中断标志位,对于TA/TB定时器的比较/捕获中断,只要访问TAIV/TBIV,标志位倍被自动清除;

对于多源中断要手动清标志位,比如P1/P2口中断,要手工清除相应的标志,如果在这种中断用"EINT();"开中断,而在打开中断前没有清标志,就会有相同的中断不断嵌入,而导致堆栈溢出引起复位,所以在这类中断中必须先清标志再打开中断开关.

李全利版单片机原理及接口技术课后答案(第五章)

章5 80C51的中断系统及定时/计数器 1.80C51有几个中断源?各中断标志是如何产生的?又是如何复位的?CPU响应各中断时,其中断入口地址是多少? 答:5个中断源,分别为外中断INT0和INT1、T0和T1溢出中断、串口中断。 电平方式触发的外中断标志与引脚信号一致;边沿方式触发的外中断响应中断后由硬件自动复位。 T0和T1,CPU响应中断时,由硬件自动复位。 RI和TI,由硬件置位。必须由软件复位。 另外,所有能产生中断的标志位均可由软件置位或复位。 各中断入口地址:INT0―0003H,T0—000BH,INT1—0013H,T1—001BH,RI和TI—0023H。 2.某系统有三个外部中断源1、2、3,当某一中断源变低电平时便要求CPU处理,它们的优先处理次序由高到低为3、2、1,处理程序的入口地址分别为2000H、2100H、2200H。试编写主程序及中断服务程序(转至相应的入口即可)。 答:将3个中断信号经电阻线或,接INT1。 ORG 0000H LJMP MAIN ORG 00013H LJMP ZDFZ ORG 0040H MAIN:SETB EA SETB EX1 SJMP $ 0RG 0200H ZDFZ:PUSH PSW PUSH ACC JB P1.0,DV0 JB P1.1,DV1 JB P1.2,DV2 INRET:POP ACC POP PSW RETI ORG 2000H DV0:------------ JMP INRET ORG 2100H

DV1:------------ JMP INRET ORG 2200H DV2:------------ JMP INRET 3.外部中断源有电平触发和边沿触发两种触发方式,这两种触发方式所产生的中断过程有何不同?怎样设定? 答: 当IT0=0时,INT0为电平触发方式。电平触发方式时,CPU在每个机器周期的S5P2采样INT0引脚电平,当采样到低电平时,置IE0=1向CPU请求中断;采样到高电平时,将IE0清0。在电平触发方式下,CPU响应中断时,不能自动清除IE0标志。 电平触发方式时,外部中断源的有效低电平必须保持到请求获得响应时为止,不然就会漏掉;在中断服务结束之前,中断源的有效的低电平必须撤除,否则中断返回之后将再次产生中断。该方式适合于外部中断输入为低电平,且在中断服务程序中能清除外部中断请求源的情况。 当IT0=1时,INT0为边沿触发方式。边沿触发方式时,CPU在每个机器周期的S5P2采样INT0引脚电平,如果在连续的两个机器周期检测到INT0引脚由高电平变为低电平,即第一个周期采样到INT0=1,第二个周期采样到INT0=0,则置IE0=1,产生中断请求。在边沿触发方式下,CPU响应中断时,能由硬件自动清除IE0标志。 边沿触发方式时,在相继两次采样中,先采样到外部中断输入为高电平,下一个周期采样到为低电平,则在IE0或IE1中将锁存一个逻辑1。若CPU暂时不能响应,中断申请标志也不会丢失,直到CPU响应此中断时才清0。另外,为了保证下降沿能够被可靠地采样到,INT0和INT1引脚上的负脉冲宽度至少要保持一个机器周期(若晶振频率为12MHz,为1微秒)。边沿触发方式适合于以负脉冲形式输入的外部中断请求。 4.定时/计数器工作于定时和计数方式时有何异同点? 答: 定时/计数器实质是加1计数器。 不同点:设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值乘以机器周期就是定时时间。设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。在每个机器周期的S5P2期间采样T0、T1引脚电平。当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。 相同点:它们的工作原理相同,它们都有4种工作方式,由TMOD中的M1M0设定,即 方式0:13位计数器; 方式1:16位计数器; 方式2:具有自动重装初值功能的8位计数器; 方式3:T0分为两个独立的8位计数器,T1停止工作。 5.定时/计数器的4种工作方式各有何特点?

单片机原理及接口技术第3章习题答案.docx

1>指令:CPU 根据人的意图来执行某种操作的命令 指令系统:一台计算机所能执行的全部指令集合 机器语言:用二进制编码表示,计算机能直接识别和执行的语言 汇编语言:用助记符、符号和数字来表示指令的程序语言 高级语言:独立于机器的,在编程时不需要对机器结构及其指令系统有深入 了解的通用性语言 2、 见第1题 3、 操作码[目的操作数][,源操作数] 4、 寻址方式 寻址牢间 立即数寻址 程序存储器ROM 直接寻址 片内RAM 低128B 、特殊功能寄存器 寄存器寻址 工作寄存器R0 R7、A 、B 、C 、DPTR 寄存器间接寻址 片内RAM 低128B 、片外RAM 变址寻址 程序存储器(@A+PC,@A+DPTR ) 相对寻址 程序存储器256B 范围(PC+偏移量) 位寻址 片内RAM 的20H-2FH 字节地址、部分SFR 5、SFR :直接寻址,位寻址,寄存器寻址;片外RAM :寄存器间接寻址 A, 40H ;直接寻址 (40H ) A RO, A ;寄存器寻址 (A ) - RO Pl, #0F0H ;立即数寻址 0F0—P1 A, @R0 ;寄存器间接寻址((RO )) - A P2, Pl ;直接寻址(Pl ) ->P2 最后结果:(RO) =38H, (A) =40H, (PO) =38H, (Pl) = (P2) =0F0H, (DPTR) =3848H, (18H) =30H, OOH) =38H, (38H) =40H, (40H) =40H, (48H) =38H 注意:?左边是内容,右边是单元 7、 用直接寻址,位寻址,寄存器寻址 8、 MOV A,DATA ;直接寻址2字节1周期 MOV A,#DATA ;立即数寻址 2字节1周期 6、MOV MOV MOV MOV MOV MOV MOV MOV MOV @R0,30H ;直接寻址(3UH ) (RO ) DPTR,#3848 ;立即数寻址 3848—DPTR 40H,38H ;直接寻址(38H ) ->40H R0,30H ;直接寻址(30H ) ->R0 P0,R0 ;寄存器寻址 (RO ) PO 18H, #30H ;立即数寻址 30->18H MOV MOV

单片机原理与接口技术课后习题第9章答案

第九章复习思考题 1. 计算机系统中为什么要设置输入输出接口? 输入/输出接口电路是CPU与外设进行数据传输的桥梁。外设输入给CPU的数据,首先由外设传递到输入接口电路,再由CPU从接口获取;而CPU输出到外设的数据,先由CPU输出到接口电路,然后与接口相接的外设获得数据。CPU与外设之间的信息交换,实际上是与I/O接口电路之间的信息交换。 2. 简述输入输出接口的作用。 I/O接口电路的作用主要体现在以下几个方面:(1)实现单片机与外设之间的速度匹配;(2)实现输出数据锁存;(3)实现输入数据三态缓冲;(4)实现数据格式转换。 3. 在计算机系统中,CPU与输入输出接口之间传输数据的控制方式有哪几种?各有什么特点? 在计算机系统中,CPU与I/O接口之间传输数据有3种控制方式:无条件方式,条件方式,中断方式,直接存储器存取方式。 在无条件方式下,只要CPU执行输入/输出指令,I/O接口就已经为数据交换做好了准备,也就是在输入数据时,外设传输的数据已经传送至输入接口,数据已经在输入接口端准备好;输出数据时,外设已经把上一次输出的数据取走,输出接口已经准备好接收新的数据。 条件控制方式也称为查询方式。CPU进行数据传输时,先读接口的状态信息,根据状态信息判断接口是否准备好,如果没有准备就绪,CPU将继续查询接口状态,直到其准备好后才进行数据传输。 在中断控制方式下,当接口准备好数据传输时向CPU提出中断请求,如果满足中断响

应条件,CPU则响应,这时CPU才暂时停止执行正在执行的程序,转去执行中断处理程序进行数据传输。传输完数据后,返回原来的程序继续执行。 直接存储器存取方式即DMA方式,它由硬件完成数据交换,不需要CPU的介入,由DMA控制器控制,使数据在存储器与外设之间直接传送。 4. 采用74LS273和74LS244为8051单片机扩展8路输入和8路输出接口,设外设8个按钮开关和8个LED,每个按钮控制1个LED,设计接口电路并编制检测控制程序。 图9.1题3接口电路原理图 接口电路原理图如图9.1 源程序: MOV DPTR,#BFFFH ;设置输入/输出口地址 COMT: MOVX A,@DPTR ;读取开关状态 NOP ;延时,总线稳定 MOVX @DPTR,A ;输出,驱动LED显示 NOP ;延时,总线稳定 AJMP CONT 5. 74LS377是8D触发器,其功能表见表9.17,其中Di为触发器的数据输入端,Qi为触发器的数据输出端,G是使能控制端,CLK是时钟输入端,Q0为建立稳态输入条件之前,锁存器输出Q的状态。采用它为8051单片机扩展1个8位的并行输出口。

MSP430单片机题目答案整理(大部分)

第一章 1. MCU(微控制器单元)与MPU(微处理器单元)的区别 MCU集成了片上外围器件,而MPU不带外围器件,是高度集成的通用结构的处理器。是去除了集成外设的MCU。 2. MSC430单片机的不同系列的差别 MSP430系列单片机具有超低功耗、处理能力强大、片内外设丰富、系统工作稳定、开发环境便捷等显着优势,和其他类型单片机相比具有更好的使用效果、更广泛的应用前景。 3. MSC430单片机主要特点 1.超低功耗 2. 强大的处理能力 3. 高性能模拟技术及丰富的片上外围模块 4. 系统工作稳定 5. 方便高效的开发环境 4. MSC430单片机选型依据 选择最容易实现设计目标且性能价格比高的机型。 在研制任务重,时间紧的情况下,首先选择熟悉的机型。 欲选的机型在市场上要有稳定充足的货源。 第二章 1. 从计算机存储器体系结构上看,MSP430单片机属于什么结构 冯·诺依曼结构,是一种程序存储器和数据存储器合并在一起的存储器体系结构。 2. RISC与CISC体系结构的主要特征是什么MSP430单片机属于哪种结构 CISC----是复杂指令系统计算机Complex Instruction Set Computer的缩写,MCS-51单片机属于CISC。具有8位数据总线、7种寻址模式,111条指令。 RISC----是精简指令系统计算机Reduced Instruction Set Computer的缩写,MSP430单片机属于RISC。具有16位数据总线、7种寻址模式,27条指令。 3. 对MSP430单片机的内存访问时,可以有哪几种方式读写字数据有什么具体要求 字,字节,常字。字访问地址必须是偶数地址单元。 4. MSP430单片机的中断向量表位于什么位置其中存放的是什么内容 中断向量表:存放中断向量的存储空间。430单片机中断向量表地址空间:32字节,映射到存储器空间的最高端区域 5. MSP430单片机的指令系统物理指令和仿真指令各有多少条。 27种物理指令-内核指令和24种仿真指令 6. MSP430单片机的指令系统有哪些寻址方式各举一例说明。 有7种寻址方式:寄存器寻址,变址寻址,符号寻址,绝对寻址, 间接寻址,间接增量寻址,立即数寻址 7. MSP430单片机的CPU中有多少个寄存器其中专用寄存器有哪几个 4个专用寄存器(R0、R1、R2、R3)和12个通用寄存器(R4~R15) R0:程序计数器(PC) R1:堆栈指针(SP)—总是指向当前栈顶 R2:状态寄存器(SR)只用到16位中的低9位 R2/R3:常数发生器(CG1/CG2) 8. 按要求写出指令或指令序列。 9. 写出给定指令或指令序列的执行结果。 10.汇编语言程序的分析与理解。

单片机原理及应用技术苏家建曹柏荣汪志锋课后习题参考答案

单片机原理及应用技术苏家建 课后习题参考答案 第三章MCS-51指令系统 3-1 MCS-51指令系统有哪几种寻址方式?按功能分类有哪几种指令? 3-2 设A=0FH,R0=30H,片内RAM的(30H)=0AH, (31H)=0BH, (32H)=0CH,下列程序段运行后的结果? MOV A,@R0 ;A=0AH MOV @R0,32H ;(30H)=0CH MOV 32H,A ;(32H)=0AH MOV R0,#31H ;R0=31H MOV A,@R0;A=(31H)=0BH 3-3 (1)R0的内容传送到R1 MOV A,R0 MOV R1,A (2)内部RAM 20H单元的内容传送到A MOV A,20H (3)外部RAM 30H单元的内容传送到R0 MOV R1,#30H MOVX A,@R1 MOV R0,A (4) 外部RAM 30H单元的内容传送到内部RAM 20H单元 MOV R1,#30H MOVX A,@R1 MOV 20H,A (5) 外部RAM 1000H单元的内容传送到内部RAM 20H单元 MOV DPTR,#1000H MOVX A,@DPTR MOV 20H,A (6)程序存储器ROM 2000H单元的内容传送到R1 MOV DPTR,#2000H CLR A MOVC A,@A+DPTR MOV R1,A (7) RAM 2000H单元的内容传送到内部RAM 20H单元 MOV DPTR,#2000H MOVX A,@DPTR MOV 20H,A (8) RAM 2000H单元的内容传送到外部RAM 30H单元 MOV DPTR,#2000H MOVX A,@DPTR MOV R0,#30H MOVX @R0,A (9) RAM 2000H单元的内容传送到外部RAM 1000H单元

51单片机学习笔记(六)_串口中断通信+定时器2串口中断

51单片机学习笔记(六)_串口中断通信+定时器2串口中 断 51 单片机默认使用定时器1 作为串口通信的波特率发生器、定时器1 中断 通信,串口与定时器1 冲突,在遇到定时器不够用的时候可以用定时器2 #include void DelayMs(unsigned int i);void SerialInit();void SendByte(unsigned char sbyte);void SendString(unsigned char *pstr);void main(void){SerialInit();while(1); //注:必需要无限循环}/*//单片机时钟周期: 11.0592MHz 以时钟1 作为波特率发生器void SerialInit(){TMOD=0x20; // 设置T1 工作方式为方式2TH1=0xfd; //给定时器高位装初值TL1=0xfd; //给定时 器低位装初值TR1=1; //开定时器//以上是设置波特率SM0=0; //设置串口通 讯方式为方式1SM1=1; REN=1; //串口是否接收数据的开关EA=1; //总中断 打开,采用查询法时不用打开中断ES=1; //串口中断开关,采用查询法时不用打开 中断}*///单片机时钟周期:11.0592MHz 以时钟T2 作为波特率发生器void SerialInit(){PCON &= 0x7F; //波特率不倍速SMOD=0SCON = 0x50; //方式1,8 位数据,可变波特率,接收允许T2CON = 0x34; RCAP2H = 0xFF; RCAP2L = 0xDC; TH2 = 0xFF; TL2 = 0xDC;EA=1; //总中断打开,采 用查询法时不用打开中断ES = 1; //串口中断开关,采用查询法时不用 打开中断}//串口中断函数:void SerialPortInte(void) interrupt 4 //采用串口中断法 收发数据{unsigned char rbyte;if(RI){ //RI=1,判定为串口接收到了数据,RI 要清零,RI=0;rbyte=SBUF; if(rbyte==0x0A){ SendString(“换行”);}else if(rbyte==0x0D){SendString(“回车”);}else{SendByte(rbyte);}}}//串口发送一个字节:void SendByte(unsigned char sbyte){ SBUF=sbyte; //发送数据while(!TI); //等待发送完成TI=0; //清零发送标志位}//串口发送一个字符串:void

《单片机原理与接口技术(第2版)张毅刚》第5章习题与答案

《单片机原理及接口技术》(第2版)人民邮电出版社 第5章I/O口应用-显示与开关/键盘输入 思考题及习题5 1.判断下列说法是否正确。 A.HD7279是用于键盘和LED数码管的专用接口芯片。答:对 B.LED数码管的字型码是固定不变的。答:错 C.为给扫描法工作的88非编码键盘提供接口电路,在接口电路中需要提供两个8位并行的输入口和一个8位并行的输出口。答:错 D.LED数码管工作于动态显示方式时,同一时间只有一个数码管被点亮。答:对 2.动态显示的数码管,任一时刻只有一个LED处于点亮状态,是LED的余辉与人眼的“视觉暂留”造成数码管同时显示的“假象”。答:对 3.为什么要消除按键的机械抖动?软件消除按键机械抖动的原理是什么? 答:消除按键的机械抖动,避免由于机械抖动造成的对键盘是否按下误判。软件消除按键机 械抖动的原理是采用软件延时,躲过键盘按键的机械抖动期。 4.LED的静态显示方式与动态显示方式有何区别?各有什么优缺点? 答:静态显示时,欲显示的数据是分开送到每一位LED上的。而动态显示则是数据是同时送到每一个LED上,再根据位选线来确定是哪一位LED被显示。静态显示亮度很高,但口线占用较多。动态显示口线占用较少,但是需要编程进行动态扫描,适合用在显示位数较多的场合。 5.分别写出表5-1中共阴极和共阳极LED数码管仅显示小数点“.”的段码。 答:80H(共阴极);7FH(共阳极)。 6.已知8段共阴极LED数码显示器要显示某字符的段码为7DH(a段为最低位),此时显示器显示 的字符为。 答:6 7.已知8段共阳极LED数码显示器要显示字符“6”(a段为最低位),此时的段码为。。 答:82H 8.当键盘的按键数目少于8个时,应采用式键盘。当键盘的按键数目为64个时,应采用式键盘。

单片机原理与运用_第三章答案

第三章单片机的汇编语言与程序设计习题 1.设内部RAM中59H单元的内容为50H,写出当执行下列程序段后寄存器A,R0和内部RAM中50H,51H单元的内容为何值? MOV A,59H MOV R0,A MOV A,#00H MOV @R0,A MOV A,#25H MOV 51H,A MOV 52H,#70H 解:MOV A,59H ;A=50H MOV R0,A ;RO=50H MOV A,#00H ;A=00H MOV @R0,A ;50H=00H MOV A,#25H ;A=25H MOV 51H,A ;51H=25H MOV 52H,#70H ;52H=70H

所以:A=25H R0=50H ;50H=00H 51H=25H 2.请选用合适的指令对P0口内容做修改(例如使P0.0~P0.3不变,P0.4~P0.7为0)。 解:MOV A,P0 ANL A,0fh Mov P0,A 3.试问外部数据存储器和程序存储器可以用哪些指令来实现?举例说明。解:访问外部数据存储器指令有: MOVX @DPTR,A MOVX DPTR,#0100H MOV @DPTR,A MOVX A,@DPTR MOVX DPTR,#0200H MOV A,@DPTR MOVX A,@Ri MOVX A,@R0 MOVX @Ri,A MOVX @RI,A 访问程序存储器指令有: MOVX A,@A+PC

MOVX A,@A+DPTR 4.设堆栈指针SP中的内容为60H,内部RAM中30H和31H单元的内容分别为24H和10H,执行下列程序段后,61H,62H,30H,31H,DPTR及SP中的内容将有何变化? PUSH 30H PUSH 31H POP DPL POP DPH MOV 30H,#00H MOV 31H,#0FFH 解:PUSH 30H ;61H=24H PUSH 31H ;62=10H SP=62H POP DPL ;DPL=10H POP DPH ;DPH=24H SP=60H MOV 30H,#00H ;30H=00H MOV 31H,#0FFH ;31H=0FFH

单片机原理及应用课后习题参考答案~章

《单片机原理及应用》习题答案 第一章计算机基础知识 1-1 微型计算机主要由哪几部分组成?各部分有何功能? 答:一台微型计算机由中央处理单元(CPU)、存储器、I/O接口及I/O设备等组成,相互之间通过三组总线(Bus):即地址总线AB、数据总线DB和控制总线CB来连接。 CPU由运算器和控制器组成,运算器能够完成各种算术运算和逻辑运算操作,控制器用于控制计算机进行各种操作。 存储器是计算机系统中的“记忆”装置,其功能是存放程序和数据。按其功能可分为RAM和ROM。 输入/输出(I/O)接口是CPU与外部设备进行信息交换的部件。 总线是将CPU、存储器和I/O接口等相对独立的功能部件连接起来,并传送信息的公共通道。 1-3 什么叫单片机?其主要由哪几部分组成? 答:单片机(Single Chip Microcomputer)是指把CPU、RAM、ROM、定时器/计数器以及I/O接口电路等主要部件集成在一块半导体芯片上的微型计算机。 1-4 在各种系列的单片机中,片内ROM的配置有几种形式?用户应根据什么原则来选用? 答:单片机片内ROM的配置状态可分四种: (1)片内掩膜(Mask)ROM型单片机(如8051),适合于定型大批量应用产品的生产; (2)片内EPROM型单片机(如8751),适合于研制产品样机; (3)片内无ROM型单片机(如8031),需外接EPROM,单片机扩展灵活,适用于研制新产品;

(4)EEPROM(或Flash ROM)型单片机(如89C51),内部程序存储器电可擦除,使用更方便。 1-5 写出下列各数的另两种数制的表达形式(二、十、十六进制) 1-6 写出下列各数的BCD参与: 第二章MCS-51单片机的硬件结构 2-1 8052单片机片内包含哪些主要逻辑功能部件? 答:8052单片机片内包括: ①8位中央处理器CPU一个 ②片内振荡器及时钟电路 ③256B数据存储器RAM。 ④8KB片内程序存储空间ROM ⑤21个特殊功能寄存器SFR ⑥4个8位并行I/O端口(32条线) ⑦1个可编程全双工串行口 ⑧可寻址64KB的外部程序存储空间和外部数据存储空间 ⑨3个16位的定时器/计数器

如何学习并使用MSP430单片机(入门)

如何学习MSP430单片机 如何学习MSP430单片机 。 下面以MSP430系列单片机为例,解释一下学习单片机的过程。 (1)获取资料 购买有关书籍,并到杭州利尔达公司网站和TI网站获取资料,例如,在网上可以找到FET使用指导、MSP430 F1xx系列、F4xx系列的使用说明和具体单片机芯片的数据说明,可以找到仿真器FET的电路图、实验板电路图、芯片封装知识等大量的实际应用参考电路,当然有些资料是英文的,看懂英文资料是个挑战,学会4、6级英语就是为看资料的。英语难学,但是看资料容易,只要下决心,看完一本资料,就可以看懂所有的相关资料。 (2)购买仿真器FET和实验电路板 如果经济条件不错,可以直接购买。 (3)自制仿真器FET和实验电路板 自制仿真器FET,首先要到网上找到FET电路图,然后就可以使用画电路板软件画电路图和电路板图,这又是个挑战。FET电路非常简单,但要把它制作出来还是需要下一番工夫的,找一本有关书,然后练习画原理图,画完原理图后,就学习认识元件封装,再购买元件,这时就可以画电路板图了,一旦画好,将形成的PCB文件交给电路板制作公司,10天后,就可以得到电路板,焊上元件和电缆,等实验电路板做好后,就可以与实验电路板一起调试了。 自制实验电路板,需要单片机芯片内部工作原理的知识、封装知识,清楚的知道每一个引脚的功能,还需要数码管、按钮、排电阻、三端稳压器、二极管、散热器、电解电容、普通电容、电阻、钮子开关等元件的知识,对于初学者,可以做一个只有3个数码管、8个按钮、8个发光二极管的简单实验板,这样的实验板,虽然简单,但足可以帮助初学者入门单片机。自制实验电路板与自制FET 一样,首先画电路图,然后买元件,再画电路板。由于MSP430系列芯片是扁平封装,焊接起来有一定难度,这好象是个挑战,但实际上很简单,方法如下:

双机间的串口双向通信2.0

单片机应用课程设计任务书

单片机应用课程设计说明书 学院名称:计算机与信息工程学院 班级名称:网工124 学生姓名:卞可虎 学号:2012211369 题目:双机间的串口双向通信设计指导教师:于红利 起止日期:2014.12.29至2015.1.4

目录 一、绪论 (1) 二、相关知识 (6) 2.1 双机通信介绍 (6) 2.2单片机AT89C51介绍 (6) 2.3 串行通信简介 (8) 2.3.1串行通信的特点 (8) 2.3.2串行通信技术标准 (9) 三、总体设计 (10) 3.1 设计需求 (10) 四、硬件设计 (10) 4.1 系统硬件电路设计 (10) 4.1.1整体电路设计 (10) 4.1.2 控制电路设计 (11) 4.1.3 复位电路 (11) 4.1.4 显示电路 (12) 五、软件设计 (12) 5.1发送端程序流程 (12) 5.2接收端程序流程 (13) 5.3按键程序 (14) 5.4串口通信程序 (15) 5.5数码管显示程序 (16)

六、Proteus软件仿真 (16) 七、结束语 (19) 参考文献 (20) 指导教师评语 (21) 成绩评定 (21) 附录:源程序 (22) 一、绪论 电子技术的飞速发展,单片机也步如一个新的时代,越来越多的功能各异的单片机为我们的设计提供了许多新的方法与思路。单片机之间的通信可以分为两大类:并行通信和串行通信。串行通信传输线少,长距离传输时成本低,且可以利用数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。所以本系统采用串行通信来实现单片机之间可靠的,有效的数据交换。 对于一些类似复杂的后台运算及通信与高实时性前台控制系统、软件资源消耗大的系统、功能强大的低消耗系统、加密系统等等。如果合理使用多种不同类型的单片机组合设计,可以得到极高灵活性与性能价格比,因此,多种异型单片机系统设计渐渐成为一种新的思路,单片机技术作为计算机技术的一个重要分支,由于单片机体积小,系统运行可靠,数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。但在一些相对复杂的单片机应用系统中,仅仅一个单片机资源是不够的,往往需要两个或多个单片机系统协同工作。这就对单片机通

单片机原理及应用课后习题答案第5章作业学习资料

单片机原理及应用课后习题答案第5章作 业

第五章中断系统作业 1. 外部中断1所对应的中断入口地址为()H。 2. 对中断进行查询时,查询的中断标志位共有、_ _、、 _ 和_ 、_ _ 六个中断标志位。 3.在MCS-51中,需要外加电路实现中断撤除的是:() (A) 定时中断 (B) 脉冲方式的外部中断 (C) 外部串行中断 (D) 电平方式的外部中断 4.下列说法正确的是:() (A) 同一级别的中断请求按时间的先后顺序顺序响应。() (B) 同一时间同一级别的多中断请求,将形成阻塞,系统无法响应。() (C) 低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求 能中断低优先级中断请求。() (D) 同级中断不能嵌套。() 5.在一般情况下8051单片机允许同级中断嵌套。() 6.各中断源对应的中断服务程序的入口地址是否能任意设定? () 7.89C51单片机五个中断源中优先级是高的是外部中断0,优先级是低的是串行口中断。() 8.各中断源发出的中断申请信号,都会标记在MCS-51系统中的()中。 (A)TMOD (B)TCON/SCON (C)IE (D)IP 9. 要使MCS-51能够响应定时器T1中断、串行接口中断,它的中断允许寄存 器IE的内容应是() (A)98H (B)84H (C)42 (D)22H 10.编写出外部中断1为负跳沿触发的中断初始化程序。 11.什么是中断?其主要功能是什么? 12. 什么是中断源?MCS-51有哪些中断源?各有什么特点? 13. 什么是中断嵌套? 14.中断服务子程序与普通子程序有哪些相同和不同之处? 15. 中断请求撤除的有哪三种方式? 16. 特殊功能寄存器TCON有哪三大作用?

第3章单片机原理课后答案

习题 1. 在MCS-51单片机中,寻址方式有几种? 答:寻址方式可分为数的寻址和指令寻址,数的寻址有:常数寻址(立即寻址)、寄存器数寻址(寄存器寻址)、存储器数寻址(直接寻址方式、寄存器间接寻址方式、变址寻址方式)和位寻址,指令的寻址有绝对寻址和相对寻址。 2. 在MCS-51单片机中,哪些寻址方式访问的是片内RAM? 答:访问片内RAM寻址有:寄存器寻址、直接寻址方式和寄存器间接寻址方式。 3. 在MCS-51单片机中,哪些寻址方式访问的是片外RAM? 答:只有寄存器间接寻址方式访问片外RAM寻址。 4. 在对片外RAM单元的寻址中,用Ri间接寻址与用DPTR间接寻址有什么区别? 答:片外数据存储器寻址中,用Ri间接寻址只能访问低端的256字节单元,而用DPTR 作指针间接访问可访问整个64K字节。 5. 在MCS-51单片机中,相对寻址方式的目的地址如何计算? 答:目的地址=当前PC+rel=转移指令的地址+转移指令的字节数+rel 6. 在位处理中,位地址的表示方式有哪几种? 答:位地址的表示方式有4种: (1) 直接位地址(00H~0FFH)。例如,20H。 (2) 字节地址带位号。例如,20H.3表示20H单元的3位。 (3) 特殊功能寄存器名带位号。例如,P0.1表示P0口的1位。 (4) 位符号地址。例如,TR0是定时/计数器T0的启动位。 7. 写出完成下列操作的指令。 (1) R2的内容送到R3中。 MOV A,R2 MOV R3,A (2) 片内RAM的30H单元内容送到片内RAM的40H单元中。 MOV 40H,30H (3) 片内RAM的30H单元内容送到片外RAM的30H单元中。 MOV A,30H MOV R0,#30H MOVX @R0,A (4) 片内RAM的20H单元内容送到片外RAM的2000H单元中。 MOV A,20H MOV DPTR,#2000H MOVX @DPTR,A (5) 片外RAM的1000H单元内容送到片内RAM的20H单元中。 MOV DPTR,#1000H MOVX A,@DPTR MOV 20H,A (6) 片外RAM的1000H单元内容送到片外RAM的4000H单元中。 MOV DPTR,#1000H MOVX A,@DPTR MOV DPTR,#4000H

第3课 HJ-2G AVR单片机学习笔记 程序编写编译环境

第3课ICC程序编写编译环境 基于HJ-2G AVR学习板 学习AVR单片机必需要安装的第二个软件:程序编写编译环境ICC AVR 1、下面说一说安装方法,在配套资料(网上下载)找到ICC AVR直接点击按装,装好后输入正版注册码,这样就可以正常使用ICCAVR软件编写编译。 2、在桌面上打开ICCAVR软件,出现如下图片:请点开工程,并新建一个工程。 3、下图为新建一个工程,请保存在C盘目录下,输入工程名称(只能是中文),点击保存。

4、新建立一个C文件,在下图空白处输入你的C源码,输完后请保存C文件。 5、加入刚才建好的C文件到工程当中,方法如下图。

6、设置一下编译器,如下图。 7、芯片用ATmega16

8、最后一步了,只要你按上面的一步一步做,最后点一下编译键,就可以正常编译成功,如果不成功,请查一查你的C源码是否正确,还有工程是不是在中文目录下。 9、总结:本课主要学习了程序编写编译环境ICC AVR的安装,设置,还有编译方法,开始学单片机时,新手不会写C源码,可以复制慧净写好的C源码到项目中,练习多次,ICCAVR 软件你就会使用了,以后学习中,每一课都会用到本软件,只要你认真跟着《慧净1天入门AVR单片机学习笔记》学习,多多练习,相信你很快速学会AVR单片机。 慧净AVR单片机免费共享学习笔记目录(配有视频教程,请在慧净空间下载) 第一部1天入门AVR单片机学习笔记 第1课:AVR单片机学习基本流程 第2课:AVR单片机程序烧写方法 第3课:程序编写编译环境 第4课:简单C语言基础知识 第二部10天学会AVR单片机学习笔记 第1课:IO端口操作 第2课:流水灯 第3课:单个数码管显示 第4课:多个数码管同时显示 第5课:独立按键 第6课:定时器 第7课:外部中断

单片机原理及应用课后习题答案第5章作业

第五章中断系统作业 1. 外部中断1所对应的中断入口地址为()H。 2. 对中断进行查询时,查询的中断标志位共有、_ _、、 _ 和_ 、_ _ 六个中断标志位。 3.在MCS-51中,需要外加电路实现中断撤除的是:() (A) 定时中断 (B) 脉冲方式的外部中断 (C) 外部串行中断 (D) 电平方式的外部中断 4.下列说法正确的是:() (A) 同一级别的中断请求按时间的先后顺序顺序响应。() (B) 同一时间同一级别的多中断请求,将形成阻塞,系统无法响应。() (C) 低优先级中断请求不能中断高优先级中断请求,但是高优先级中断请求 能中断低优先级中断请求。() (D) 同级中断不能嵌套。() 5.在一般情况下8051单片机允许同级中断嵌套。() 6.各中断源对应的中断服务程序的入口地址是否能任意设定? () 7.89C51单片机五个中断源中优先级是高的是外部中断0,优先级是低的是串行口中断。() 8.各中断源发出的中断申请信号,都会标记在MCS-51系统中的()中。 (A)TMOD (B)TCON/SCON (C)IE (D)IP 9. 要使MCS-51能够响应定时器T1中断、串行接口中断,它的中断允许寄存器 IE的内容应是() (A)98H (B)84H (C)42 (D)22H 10.编写出外部中断1为负跳沿触发的中断初始化程序。 11.什么是中断?其主要功能是什么? 12. 什么是中断源?MCS-51有哪些中断源?各有什么特点? 13. 什么是中断嵌套? 14.中断服务子程序与普通子程序有哪些相同和不同之处? 15. 中断请求撤除的有哪三种方式? 16. 特殊功能寄存器TCON有哪三大作用? 17. 把教材的P82页的图改为中断实现,用负跳变方式,中断0(INT0)显示“L2”,中断1(INT1)显示“H3”。(可参考第四章的电子教案中的例子) 18.第5章课后作业第9题。 第五章中断系统作业答案 1. 外部中断1所对应的中断入口地址为(0013)H。 2. 对中断进行查询时,查询的中断标志位共有 IE0 、_TF0_、IE1 、 TF1_ 和_TI 、_RI_六个中断标志位。【实际上只能查询TF0、TF1、TI、RI】 3.在MCS-51中,需要外加电路实现中断撤除的是:(D) (A) 定时中断 (B) 脉冲方式的外部中断 (C) 外部串行中断 (D) 电平方式的外部中断 4.下列说法正确的是:(A C D ) (A) 同一级别的中断请求按时间的先后顺序顺序响应。(YES)

单片机原理及应用第三章习题答案

习题三 1.在MCS-51单片机中,寻址方式有几种?其中对片内RAM 可以用哪几种寻址方式?对片外RAM可以用哪几种寻址方式? 答:寻址方式可分为数的寻址和指令寻址,数的寻址有:常数寻址(立即寻址)、寄存器数寻址(寄存器寻址)、存储器数寻址(直接寻址方式、寄存器间接寻址方式、变址寻址方式)和位寻址,指令的寻址有绝对寻址和相对寻址。片内RAM寻址有:寄存器寻址、直接寻址方式和寄存器间接寻址方式。片外RAM寻址有:寄存器间接寻址方式。2.在对片外RAM单元寻址中,用Ri间接寻址与用DPTR 间接寻址有什么区别? 答:片外数据存储器寻址中,用Ri间接寻址只能访问低端的256字节单元,而用DPTR作指针间接访问可访问整个64K字节。 3.在位处理中,位地址的表示方式有哪几种? 答:1.直接位地址(00H~0FFH)。例如:20H 2.字节地址带位号。例如:20H.3表示20H单元的3位。 3.特殊功能寄存器名带位号。例如:P0.1表示P0口的1位。 4.位符号地址。例如:TR0是定时/计数器T0的启动位。 4.写出完成下列操作的指令。 (1)R0的内容送到R1中。 MOV A,R0 MOV R1,A (2)片内RAM的20H单元内容送到片内RAM的40H单元中。 MOV 40H,20H (3)片内RAM的30H单元内容送到片外RAM的50H单元中。 MOV A,30H MOV R0,#50H MOVX @R0,A (4)片内RAM的50H单元内容送到片外RAM的3000H 单元中。 MOV A,50H MOV DPTR,#3000H MOVX @DPTR,A (5)片外RAM的2000H单元内容送到片内RAM的20H 单元中。 MOV DPTR,#2000H MOVX A,@DPTR MOV 20H,A (6)片外RAM的1000H单元内容送到片外RAM的4000H 单元中。 MOV DPTR,#1000H MOVX A,@DPTR MOV DPTR,#4000H MOV @DPTR,A (7)ROM的1000H单元内容送到片内RAM的50H单元中。 MOV A,#0 MOV DPTR,#1000H MOVC A,@A+DPTR MOV 50H,A (8)ROM的1000H单元内容送到片外RAM的1000H单元中。 MOV A,#0 MOV DPTR,#1000H MOVC A,@A+DPTR MOVX @DPTR,A 5.区分下列指令有什么不同? (1)MOV A,20H和MOV A,#20H 答:前者源操作数是直接寻址,后者源操作数立即寻址。 (2)MOV A,@R1和MOVX A,@R1 答:前者源操作数是访问片内数据存储器,后者源操作数访问片外数据存储器低256字节。 (3)MOV A,R1和MOV A,@R1 答:前者源操作数是寄存器寻址,后者源操作数寄存器间接寻址。 (4)MOVX A,@R1和MOVX A,@DPTR 答:前者源操作数是访问片外数据存储器低256字节,后者源操作数访问片外数据存储器整个64K字节。 (5)MOVX A,@DPTR和MOVC A,@A+DPTR 答:前者源操作数是访问片外数据存储器,后者源操作数访问程序数据存储器。 6.设片内RAM的(20H)=40H,(40H)=10H,(10H)=50H,(P1)=0CAH。分析下列指令执行后片内RAM的20H、40H、10H单元以及P1、P2中的内容。 MOV R0,#20H ;R0=20H MOV A,@R0 ;A=40H MOV R1,A ;R1=40H MOV A,@R1 ;A=10H MOV @R0,P1 ;(40H)=0CAH MOV P2,P1 ;P2=0CAH MOV 10H,A ;(10H)=10H 1

单片机读书笔记

单片机的分类 单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统。 众多的单片机可以从不同角度进行分类。 Ⅰ按生产厂家分 1.INTEL公司的单片机(MCS-48系列单片机:MCS-48单片机是美国INTEL公司于1976年推出,它是现代单片机的雏形,包含了数字处理的全部功能,外接一定的附加外围芯片即构成完整的微型计算机;MCS-51系列:MCS-51单片机是美国INTE公司于1980年推出的产品,与MCS-48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品) 2.ATMEL公司的单片机(AT89系列单片机:AT89系列单片机是ATMEL 公司的8位Flash单片机系列。这个系列单片机的最大特点是在片内含有Flash存储器。因此,在应用中有着十分广泛的前途特别是在便携式、省电及特殊信息保存的仪器和系统中显得更为有用;A VR单片机:A VR单片机是1997年由ATMEL公司研发出的增强型内置Flash的RISC(Reduced Instruction Set CPU) 精简指令集高速8位单片

机。A VR的单片机可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。) 3.Motorola公司的单片机(MC68300系列单片机:MC68300系列微控制器采用模块化设计,可以根据用户的要求,选择不同的模块,以适应不同的应用场合) 4. MicroChip单片机的单片机(PIC12CXXX系列单片机、PIC16CXXX系列单片机) 5.PHILIPS公司的单片机(通用型单片机:PHILIPS公司的P80C31基于80C51内核采用高密度CMOS技术设计制造,包含中央处理单元、128字节内部数据存储器RAM、32个双向输入/输出(I/O)口、3个16位定时/计数器和6个中断源,4层优先级中断嵌套结构,可用于多机通信的串行I/O口,I/O扩展或全双工UART,片内时钟振荡电路;Flash 单片机、低功耗OTP单片机) 6.TI公司的单片机(TI单片机MSP430:德州仪器(TI)超低功率16位RISC混合信号处理器的MSP430产品系列为电池供电测量应用提供了最终解决方案。德州仪器作为混合信号和数字技术的领导者,TI 创新生产的MSP430,使系统设计人员能够在保持独一无二的低功率的同时同步连接至模拟信号、传感器和数字组件。) 7.其他公司的单片机(美国SST公司的SST89系列、美国CYGNAL公司的C8051FXXX系列单片机、东芝TLCS-870系列单片机) Ⅱ按单片机数据总线的位数,可将单片机分为4位、8位、16位、32位

单片机原理及接口技术张毅刚第5章习题及答案

第5章 I/O口应用-显示与开关/键盘输入 思考题及习题5 1.判断下列说法是否正确。 A.HD7279是用于键盘和LED数码管的专用接口芯片。答:对 B.LED数码管的字型码是固定不变的。答:错 C.为给扫描法工作的88非编码键盘提供接口电路,在接口电路中需要提供两个8位并行的输入口和一个8位并行的输出口。答:错 D.LED数码管工作于动态显示方式时,同一时间只有一个数码管被点亮。答:对 2.动态显示的数码管,任一时刻只有一个LED处于点亮状态,是LED的余辉与人眼的“视觉暂留”造成数码管同时显示的“假象”。答:对 3.为什么要消除按键的机械抖动软件消除按键机械抖动的原理是什么 答:消除按键的机械抖动,避免由于机械抖动造成的对键盘是否按下误判。软件消除按键机械抖动的原理是采用软件延时,躲过键盘按键的机械抖动期。 4.LED的静态显示方式与动态显示方式有何区别各有什么优缺点 答:静态显示时,欲显示的数据是分开送到每一位LED上的。而动态显示则是数据是同时送到每一个LED上,再根据位选线来确定是哪一位LED被显示。静态显示亮度很高,但口线占用较多。动态显示口线占用较少,但是需要编程进行动态扫描,适合用在显示位数较多的场合。 5.分别写出表5-1中共阴极和共阳极LED数码管仅显示小数点“.”的段码。 答: 80H(共阴极);7FH(共阳极)。 6. 已知8段共阴极LED数码显示器要显示某字符的段码为7DH(a段为最低位),此时显示器显示 的字符为。 答:6 7.已知8段共阳极LED数码显示器要显示字符“6”(a段为最低位),此时的段码为。。答:82H 8.当键盘的按键数目少于8个时,应采用式键盘。当键盘的按键数目为64个时,应采用式键盘。 答:独立式,矩阵式

相关主题