单片机操作例程

单片机操作例程
单片机操作例程

按键显示

一、控制要求

8个按钮(SB0~SB7),一个数码管显示。

无按钮按下时显示字母“P”,有按钮按下时显示对应键值(0~7)

二、参考电路

三参考程序

ORG 0000H

LP: JB P2.0,SB1

MOV P1,#3FH ;送0 JNB P2.0,$

SB1: JB P2.1,SB2

MOV P1,#06H;送1 JNB P2.1,$

SB2: JB P2.2,SB3

MOV P1,#5BH;送2 JNB P2.2,$

SB3: JB P2.3,SB4

MOV P1,#4FH;送3 JNB P2.3,$

SB4: JB P2.4,SB5

MOV P1,#66H;送4 JNB P2.4,$

SB5: JB P2.5,SB6

MOV P1,#6DH;送5

JNB P2.5,$

SB6: JB P2.6,SB7

MOV P1,#7DH;送6

JNB P2.6,$

SB7: JB P2.7,SBP

MOV P1,#07H;送7

JNB P2.7,$

SBP: MOV P1, #73H;送P

SJMP LP

6个数码管显示移动字符

一、控制要求

六个数码管移动显示一组字符,规定:若向左移动,则一组字符从最右逐个移入,向左移出,全部移出后又从最右移入,如此循环n次。若向右移动则方向相反。要求:具体一组字符内容、移动速度、移动方向、循环次数具由现场设定。

二、参考电路

设数码管有n个(n位),每扫描一个数码管显示的时间段为T1,则扫描一遍需时间为:T2=nT1.根据人眼的视觉残留效应的时间,T2应小于0.04秒,所以nT1<0.04秒,即T1<0.04/n秒。当用6个数码管时,n=6,则可取T1<6ms.若取T1=1 ms即一次点亮一个数码管或在一个数码管上延时的时间是1ms,则6个数码管扫描一遍时间需T2=6 ms此时扫描一帧画面的频率为1/6ms=167赫兹,这个扫描频率是不会感到闪烁的。如果持续循环这样扫描下去,看到的是固定的一幅画面“012345”。

要想使看到的画面从右向左移动设要隔T3时间移动一下,则一幅画面的扫描次数m= T3/ T2.例如,若要每1秒移动一下,则一帧画面的扫描次数

m=1s/6ms=167次。在程序中,设定循环扫描的次数为167次,即可使显示的数字每1秒移动一下,改变循环扫描的次数可改变移动

的速度。由于程序中除延时子程序外还有其它指令要占用时间循环扫描的次数要比167次小

三参考程序:

ORG 0000H

ST: MOV R5,#3

LOOP: MOV R7,#12 ;12组数据(每组6个)

MOV 20H,#0 ;将显示数据的段码距段

码表TAB首地址的偏移

量初值送20H

LP0: MOV R3,#60H ;一组数据循环显示60H

遍,此数据决定移动速度

DL: MOV R0,20H ;每组数据的偏移量首值

送R0

MOV R6,#0FEH ;位码初值(点亮L1)送

R6

LP: MOV P3,#0FFH ; 关显示位码送P3口,否

则会模糊不清

MOV DPTR,#TAB ;段码表首地址送DPTR

MOV A,R0 ;偏移量送A

MOVC A,@A+DPTR;取段码

MOV P1,A ;送字型

MOV P3,R6 ;位码送字位口,显示该数

DJNZ R4,$ ;延时

INC R0 ;偏移量加一

MOV A,R6 ;位码

RL A ;左移一位指向下一位

MOV R6,A ;保存位码

JB ACC.6,LP ; 6位未显示完转LP

DJNZ R3,DL ;一组数据显示遍数未完

转DL

INC 20H ;每组偏移量初值加一,

形成下一组偏移量初值DJNZ R7,LP0 ;12组数据未显示完转

LP0

DJNZ R5,LOOP ;循环3次

SJMP $

TAB:DB 00H,00H,00H,00H,00H,3FH,06H,5BH,4FH DB 66H,6DH,00H,00H,00H,00H,00H

END

多台设备循环

一、控制要求

六个LED灯代替6台电动机。两个按钮,一个启动,一个停止。启动键按下后LED灯按照指定顺序与时间循环点亮和熄灭,并循环不止。按下停止,则LED灯全灭,停止后再启动,从头开始运行。要求停止必须使用中断,且堆栈指针必须设置为7BH。

二、 参考电路

三、 参考程序

ORG 0000H LJMP MAIN

ORG 0003H ;外部中断0的矢量地址 AJMP ZT ;有中断产生跳转到ZT 处

MAIN: MOV SP,#7BH ;设置堆栈指针为7BH

MOV IE,#81H ;开中断

MOV DPTR,#TAB ;送数码表首地址

74LS07*6 LED1~LED6

VCC

MOV P1,#0FFH ;开始时使所有灯灭

JB P3.0,$ ;等待启动按键按下

QD: MOV R0,#0 ;设置读取数码表偏移量

为0

LP: MOV A,R0

MOVC A,@A+DPTR;读取数码表里的一个数

CPL A

MOV P1,A ;送P1口进行显示

DY1: MOV R4,#4 ;延时1S程序

(晶振频率为6MHZ)

D0: DJNZ R6,D0

DJNZ R5,D0

DJNZ R4,D0

INC R0

CJNE R0,#21,LP ;判断是否将数据全部显示

完毕

SJMP QD

TAB:DB 01H,02H,02H,04H,04H,04H,08H,08H,08H DB 08H,10H,10H,10H,10H,10H,20H,20H,20H

DB 20H,20H,20H

ZT: MOV P1,#0FFH

JB P3.0,$

POP 40H ;先弹出高8位地址

POP 41H ;再弹出低8位地址

MOV 30H,#05H;开始处低8位地址

MOV 31H,#00H;开始处高8位地址

PUSH 30H;先压低8位地址

PUSH 31H;再压高8位地址

RETI

END

打印机接口电路

一、控制要求

利用8051控制TpuP-AT微型打印机,打印两行文字:第一行:U=380.5V,I=58.6mA

第二行:XXXX年XX月XX日

二、参考电路原理图

注:/STB上升沿将DB0~DB7的数据锁存至打印机内;打印机繁忙时BUSY输出为高电平,否则输出低电平;打印机接收到回车符时开始打印(回车符的ASCII码是0DH,换行符是0AH,年为8CH,月为8DH日为8EH)

ORG 0000H

START: MOV R0,#0 ;设置读取表格偏移量为0

MOV DPTR,#TAB;表格首地址送DPTR LP: MOV A,R0

MOVC A,@A+DPTR ;读取表格里的一个数

MOV P1,A ;将数据送打印机数据口 CLR P3.1 ;

JB P3.2,$ ;繁忙时等待

SETB P3.1 ;当STB上升沿时数据口的

数据被锁存

INC R0 ;指向数据表格里的下一个数

CJNE A,#0DH,LP;判断传送是否完毕

SJMP $

TAB:DB …U=380.5V,I=58.6A?,0AH

DB …2008年03月16日?,0DH

END

生产线工件自动计数器

一、控制要求

两个数码管对红外对管输入计数值进行显示,两个按钮,一个启动,一个暂停。启动后从0开始对红外对管输入的计数值进行计数显示,计数到目标值(0<目标值

<=99)后LED发光报警并停止计数但显示保持,报警后按下启动按钮又从0开始计数显示。在计数显示过程中,暂停按钮若按下,则停止计数显示,暂停后再启动则接着暂停前的状态继续运行。

三.参考程序:

ORG 0000H

MAIN: MOV DPTR,#TAB ;段码表首地址送DPTR MOV TMOD,#05H; T0工作在方式1

MOV TL0,#0 ;将计数器清零

JB P3.3,$ ;等待启动按扭按下

LP0: SETB TR0 ;启动计数器T0

ACALL DP ;调用显示子程序,不断扫描显示

当前的计数值

JB P3.2,LP2;没按暂停就转LP2

CLR P3.5 ;按下暂停使LED灯亮

CLR TR0 ;暂停后停止计数

LP1: ACALL DP;调用显示子程序

JB P3.3,LP1;等待暂停后的启动

LP2: SETB P3.5;暂停后再启动将LED灯灭

CJNE R0,#18,LP0;判断计数是否达到目标

数,没达到则转LP0

CLR P3.5 ; 如果达到则使LED灯亮

CLR TR0 ;停止计数

LP3: ACALL DP;调用显示子程序

JB P3.3,LP3 ;等待再次启动

SJMP MAIN;再次启动后从0开始计数

TAB:DB 3FH,06H,5BH,4FH,66H,6DH

DB 7DH,07H,7FH,6FH;0—9共阴段码

DP: MOV A,TL0 ;取计数值

MOV R0,A ;送R0

MOV B,#10;

DIV AB;用除法指令将A中数分成个位,十位

MOVC A,@A+DPTR ;取显示十位段码

MOV P1,A ;送P1进行显示

CLR P3.0 ;使十位显示有效

SETB P3.0 ;使十位显示无效

MOV A,B

MOVC A,@A+DPTR ;取显示个位段码

MOV P1,A ;送P1进行显示

CLR P3.1 ;使个位显示有效

SETB P3.1 ;使个位显示无效

RET

END

电梯轿厢指层器

一、控制要求

两个数码管显示电梯楼层,十位数码管的小数点作为上升指

示,个位数码管的小数点作为下降指示。电梯上升或下降过程

中,显示前方楼层,对应上升或下降指示亮。平层后显示当前楼

层,上升或下降指示不亮。运行时间以及平层时间按照考评要求

定。楼层数亦按照考评要求定。

以16层显示为例:

01→0.2→02→0.3→03→0.4→04→0.5

→05→0.6→——→0.9→09→1.0→10→1.1→------→15→1.6

→16→15. →15→14. →14→13. →13→12. →12→-----02.

→02→01. →

ORG 0000H

START: MOV R0,#0 ;设置偏移量为0

MOV DPTR,#TAB;数码表首地址送DPTR LP: MOV A,R0;取偏移量

MOVC A,@A+DPTR;取数码管数据

MOV R1,A;送十位段码

INC R0

MOV A,R0

MOVC A,@A+DPTR;读取下一个数据

MOV R2,A;送个位段码

D1: MOV R4,#2;显示程序段,显示程序约为3

D2: MOV P1,R1;十位数段码送P1口CLR P3.0;显示十位

SETB P3.0;关十位

MOV P1,R2;个位数段码送P1口

CLR P3.1;显示个位

SETB P3.1;关个位

DJNZ R6,D2;0减1为FF,256次

DJNZ R5,D2

DJNZ R4,D2

INC R0

CJNE R0,#16,LP

SJMP START;循环

TAB:DB 3FH,06H,0BFH,5BH,3FH,5BH,0BFH DB 4FH,3FH,4FH,3FH,0DBH,3FH,5BH DB 3FH,86H

END

步进电机自动控制

一、控制要求

利用AT89C51控制4相三四拍(步)6线步进电机(型号:25BY48B03,30欧姆,步距角度为7.5度)工作,两个按钮控制,一个启动,另外一个暂停。启动后步进电机先正转m周,再反转n周,转一周的时间为t秒,并循环不止。运作过程中暂停按钮按下步进电机停止运转,暂停后再启动,接着暂停前状态运行。要求暂停必须使用中断,且堆栈指针SP必须指向7BH。建议m=4, n=3, t=3S或4S。

单片机35个实例1(汇编)

1.闪烁灯 1.实验任务 如图4.1.1所示:在P1.0端口上接一个发光二极管L1,使L1在不停地一亮一灭,一亮一灭的时间间隔为0.2秒。 2.电路原理图 图4.1.1 3.系统板上硬件连线 把“单片机系统”区域中的P1.0端口用导线连接到“八路发光二极管指示模块”区域中的L1端口上。

4.程序设计内容 (1).延时程序的设计方法 作为单片机的指令的执行的时间是很短,数量大微秒级,因此, 我们要求的闪烁时间间隔为0.2秒,相对于微秒来说,相差太 大,所以我们在执行某一指令时,插入延时程序,来达到我们 的要求,但这样的延时程序是如何设计呢?下面具体介绍其原 理: 如图4.1.1所示的石英晶体为12MHz,因此,1个机器周期为1微秒 机器周期微秒 MOV R6,#20 2个 2 D1: MOV R7,#248 2个 2 2+2×248 =498 20× DJNZ R7,$ 2个2×248 (498 DJNZ R6,D1 2个2×20=40 10002

因此,上面的延时程序时间为10.002ms。 由以上可知,当R6=10、R7=248时,延时5ms,R6=20、R7 =248时,延时10ms,以此为基本的计时单位。如本实验要求 0.2秒=200ms,10ms×R5=200ms,则R5=20,延时子程序如 下: DELAY: MOV R5,#20 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET (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.程序框图

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.汇编语言程序的分析与理解。

如何学习并使用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系列芯片是扁平封装,焊接起来有一定难度,这好象是个挑战,但实际上很简单,方法如下:

单片机程序源代码

第二章 任务一:闪烁广告灯的设计 利用89C51单片机的端口控制两个LED ( DO和D1 ),编写程序,实现两个LED互闪。 #include #define uint unsigned int #define uChar unsigned Char sbit LED仁POP; sbit LED2=P0A1; void delayms(uint ms) { uint i; while(ms--) { for(i=O;i<12O;i++); } } void main() { while(1) { LED1=O; LED2=1; delayms(5OO); LED1=1; LED2=O; delayms(5OO); } } 任务二:流水广告灯的设计 利用89c51单片机的端口控制8个LED( D0~D7 )循环点亮,刚开始时DO点亮,延时片刻后,接着D1 点亮,然后依次点亮D2->D3->D4->D5 ->D6->D7 ,然后再点亮D7->D6->D5->D4 ->D3->D2->D1->DO ,重复循环。 #include #include #define uint unsigned int #define uchar unsigned char uint i; uchar temp; uint a[8]={Oxfe,Oxfd,Oxfb,Oxf7,Oxef,Oxdf,Oxbf,Ox7f}; void delayms(uint ms) { while(ms--) { uint j; for(j=0;j<120;j++); } }

MSP430初学者教程(最详细)

如何学习 学习就是迎接挑战、解决困难的过程,没有挑战,就没有人生的乐趣。 下面以系列为例,解释一下学习的过程。 (1)获取资料 购买有关书籍,并到杭州利尔达公司网站和TI网站获取资料,例如,在网上可以找到FET 使用指导、F1xx系列、F4xx系列的使用说明和具体芯片的数据说明,可以找到FET的、实验板、知识等大量的实际应用参考电路,当然有些资料是英文的,看懂英文资料是个挑战,学会4、6级英语就是为看资料的。英语难学,但是看资料容易,只要下决心,看完一本资料,就可以看懂所有的相关资料。 (2)购买FET和实验电路板 如果经济条件不错,可以直接购买。 (3)自制FET和实验电路板 自制仿真器FET,首先要到网上找到FET,然后就可以使用画电路板软件画电路图和电路板图,这又是个挑战。FET电常简单,但要把它制作出来还是需要下一番工夫的,找一本有关书,然后练习画,画完后,就学习认识,再购买元件,这时就可以画电路板图了,一旦画好,将形成的PCB文件交给公司,10天后,就可以得到电路板,焊上元件和电缆,等实验电路板做好后,就可以与实验电路板一起调试了。 自制实验电路板,需要单片机芯片内部工作原理的知识、封装知识,清楚的知道每一个的功能,还需要、按钮、、三端、、散热器、、普通电容、电阻、等元件的知识,对于初学者,可以做一个只有3个、8个按钮、8个的简单实验板,这样的实验板,虽然简单,但足可以帮助初学者入门单片机。自制实验电路板与自制FET一样,首先画电路图,然后买元件,再画电路板。由于系列芯片是扁平封装,焊接起来有一定难度,这好象是个挑战,但实际上很简单,方法如下:首先在焊盘上涂上,在未干的情况下,将芯片放在焊盘上,注意芯片第一的位置,并使与焊盘对齐,将擦干净的(不能有任何)接触引脚,引脚只要一热,焊盘上的就自动将引脚焊住了,千万注意上不能有,焊接时最好配备一个。焊接电路板时,每一个元件都要核对参数,可以用万用表测量的元件一定要测量。 (4)从网上获得IA 到利尔达公司或的网站下载IA,并安装到计算机上。 (5)调试FET和实验板

如何读懂单片机程序

如何读懂单片机程序 这是一篇关于单片机入门的基础文章!刚刚接触单片机的朋友,简直是无从下手,打开一个程序,更会被复杂的结构和密密麻麻的代码吓倒!多么想找个人耐心的指导一下,是你们内心的强烈意识!好吧,我来满足你! 我对单片机的总结:“单片机其实就是一个芯片,内部有若干寄存器,外部有若干引脚,我们可以通过程序控制内部的寄存器使得引脚与外部世界保持联系!”就这几句话,道出了单片机的真谛!有没有感觉到单片机是多么的简单! 1.单片机程序执行流程 这是我们首先必须要知道的。单片机程序一般就有两种,一种是汇编程序,一种是c语言程序。这里我们讲c语言程序。 单片机程序都有一个包含主函数的文件,包含主函数的文件都有一个统一的结构,如下所示: #include "xxx.h" int main() // 这是主函数的函数名 { ......; // 若干条语句 ......; while(1) // while括号中是1,说明程序进入后将在while里面无线循环,不会出来了,不懂的去看c语言基础之while篇 { ......; // 若干条语句 ......; } } 重点:单片机一上电,从主函数main的第一条语句开始执行,是一条语句接着一条语句从上而下执行,直到进入while后,再从while的第一条语句执行到最后一条语句,由于是死循环,会再从while的第一条语句执行到最后一条语句,如此反复执行,永不停止!直到断电! 这些语句当中,有些是函数的调用,遇到函数的调用,进入到函数,再从函数的第一条语句执行到最后一条语句,然后跳出函数,再从刚才主函数中那条函数的下一条语句开始执行。如果实在搞不明白函数是怎么一回事,你可以用函数里面的所有语句代替函数在主函数中的位置。例如:

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)所示。

51单片机基本程序

1第一位隔一秒闪烁一次 #include #define uint unsigned int sbit led1=P1^0; uint i; uint j; void main() { while(1) { led1=0; for(i=1000;i>0;i--) for(j=110;j>0;j--); led1=1; for(i=1000;i>0;i--) for(j=110;j>0;j--); } } 2复杂广告灯 #include #define uint unsigned int #define uchar unsigned char uchar discode[]={ 0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,//正向流水灯 0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,//反向流水灯 0xAA,0x55,0xAA,0x55,0xAA,0x55,0xFF,//隔灯闪烁3次 0xF0,0x0F,0xF0,0x0F,0xFF,//高四盏。低四盏闪烁2次 0x33,0xCC,0x33,0xCC,0x33,0xCC,0xFF//隔两盏闪烁3次 }; void delayms(uint ms) { uint i; while(ms--) { for(i=0;i<120;i++); } } void main(void) { uchar i; P0=0xFF;

while(1) { for(i=0;i<35;i++) { P0=discode[i]; delayms(250); } } } 3拉幕式与闭幕式广告灯 #include #define uint unsigned int #define uchar unsigned char uchar discode1[4]={0x18,0x24,0x42,0x81}; uchar discode2[4]={0x7E,0x3C,0x18,0x00}; void delayms(uint ms) { uint i; while(ms--) { for(i=0;i<120;i++); } } void main(void) { uchar i,j; P0=0xFF; while(1) { for(i=0;i<4;i++) { j=discode1[i]; P0=~j; delayms(500); } j=0xFF; P0=~j; delayms(500); for(i=0;i<4;i++) { j=discode2[i]; P0=~j;

MSP430单片机原理解读

第 2 章MSP430 单片机原理与 C 语言基础MSP430系列超低功耗单片机有200多种型号,TI公司用3~ 4位数字表示其型号。其中第一位数字表示大系列,如MSP430F1xx系列、MSP430F2xx系列、MSP430F4xx系列、MSP430F5xx系列等。在每个大系列中,又分若干子系列,单片机型号中的第二位数字表示子系列号,一般子系列越大,所包含的功能模块越多。最后1~2 位数字表示存储容量,数字越大表示RAM 和ROM 容量越大。430 家族中还有针对热门应用而设计的一系列专用单片机。如SP430FW4xx 系列水表专用单片机、MSP430FG4xx 系列医疗仪器专用单片机、MSP430FE4xx 系列电能计量专用单片机等。这些专用单片机都是在同型号的通用单片机上增加专用模块而构成的。最新的MSP430型号列表可以通过TI公司网站下载。 在开发单片机应用系统时,第一步就是单片机的选型,选择合适的单片机型号往往就能事半功倍。单片机选型基本方法是选择功能模块最接近项目需求的系列,然后根据程序复杂程度估算存储器和RAM 空间,并留有适当的余量,最终决定选用的单片机型号。 本章节以MSP430F249单片机为学习目标,介绍单片机的基本结构和工作原理,读者可以举一反三、触类旁通,而不必每种型号都去学习却无法深入掌握。 2.1 MSP430F249单片机基本结构与原理 2.1.1MSP430F249的主要结构特点 供电电压范围1.8V~3.6V 。 超低功耗:活动状态270uA(1MHz,2.2V);待机模式0.3uA;关机模式0.1uA。 16位RISC精简指令集处理器。 时钟系统:多种时钟源,可灵活使用。时钟频率达到16MHz ;具有内部振荡器;可外接32kHz 低频晶振;外接时钟输入。 12位A/D转换器,内部参考电压,采用保持电路。 16位定时器A,3个捕获/比较寄存器。 16 位定时器B,7 个捕获/比较寄存器。 4个通用串口:USCI_A0 和USCI_A1、USCI_B0 和USCI_B1(I2C、SPI)。 60kB+256B的flash程序存储器,2kB的RAM数据存储器。 64引脚QFP封装。 MSP430F249单片机的芯片封装形式如图2.1所示,各引脚的功能描述如表2-1 所列。 2.1.2 MSP430F249单片机的基本结构 MSP430F24x系列单片机功能结构示意图如图2.2所示。 (1)CPU简介 MSP430单片机的CPU为16位RISC精简指令集的处理器,只有27条正交汇编指令和7 种寻址方式。RISC 处理器基本上是为高级语言所设计的,编译程序对正交指令系统很容易做到最优化,利于产生高效紧凑的代码。MSP430CPU 中集成了16个16位通用寄存器 R0~R15,其中R0~R3分别复用为程序指针PC、堆栈指针SP、状态寄存器SR和常数发生器CG1/CG2。这些寄存器之间的操作只需要一个CPU 周期。

单片机操作例程

按键显示 一、控制要求 8个按钮(SB0~SB7),一个数码管显示。 无按钮按下时显示字母“P”,有按钮按下时显示对应键值(0~7) 二、参考电路

三参考程序 ORG 0000H LP: JB P2.0,SB1 MOV P1,#3FH ;送0 JNB P2.0,$ SB1: JB P2.1,SB2 MOV P1,#06H;送1 JNB P2.1,$ SB2: JB P2.2,SB3 MOV P1,#5BH;送2 JNB P2.2,$ SB3: JB P2.3,SB4 MOV P1,#4FH;送3 JNB P2.3,$ SB4: JB P2.4,SB5 MOV P1,#66H;送4 JNB P2.4,$

SB5: JB P2.5,SB6 MOV P1,#6DH;送5 JNB P2.5,$ SB6: JB P2.6,SB7 MOV P1,#7DH;送6 JNB P2.6,$ SB7: JB P2.7,SBP MOV P1,#07H;送7 JNB P2.7,$ SBP: MOV P1, #73H;送P SJMP LP 6个数码管显示移动字符 一、控制要求 六个数码管移动显示一组字符,规定:若向左移动,则一组字符从最右逐个移入,向左移出,全部移出后又从最右移入,如此循环n次。若向右移动则方向相反。要求:具体一组字符内容、移动速度、移动方向、循环次数具由现场设定。

二、参考电路 设数码管有n个(n位),每扫描一个数码管显示的时间段为T1,则扫描一遍需时间为:T2=nT1.根据人眼的视觉残留效应的时间,T2应小于0.04秒,所以nT1<0.04秒,即T1<0.04/n秒。当用6个数码管时,n=6,则可取T1<6ms.若取T1=1 ms即一次点亮一个数码管或在一个数码管上延时的时间是1ms,则6个数码管扫描一遍时间需T2=6 ms此时扫描一帧画面的频率为1/6ms=167赫兹,这个扫描频率是不会感到闪烁的。如果持续循环这样扫描下去,看到的是固定的一幅画面“012345”。 要想使看到的画面从右向左移动设要隔T3时间移动一下,则一幅画面的扫描次数m= T3/ T2.例如,若要每1秒移动一下,则一帧画面的扫描次数 m=1s/6ms=167次。在程序中,设定循环扫描的次数为167次,即可使显示的数字每1秒移动一下,改变循环扫描的次数可改变移动

MSP430单片机入门基础例程1

MSP430单片机入门基础例程1 作者:DC 微控技术论坛原创 MSP430单片机入门基础例程 若想了解MSP430单片机常用模块应用原理,请下载<> 由于IO应用原理比较简单,所以我主要以MC430F14开发板的实例来讲解。新手用户可以 参与其应用思路。 计划推出几个有价值的参考例程: [1]直接IO按键检测处理程序(非低功耗方式) [2]IO口中断演示程序 [3]利用IO中断方式实现按键检测程序(低功耗方式) 实验制作如下图,新手用户轻松地在MC430F14开发板上实现。 例程[1]:

//MSP430F14-直接IO口按键检处理程序 /******************************************************************* ******/ //以下是结合MC430F14开发板来实现的按键检处理程序实验. //分别使用了采个三个按键接到MSP430的通用IO口,按任意一个按键可以使板上的LED反转. //例程中,按键采用不断查询方式,以得到键值.并没有使用到低功耗.此程序结构比较适合 //用在非手持设备或非电池供电的设计中.此程序结构比较通用,级用户可参与或套用修改. //应用目标板:https://www.360docs.net/doc/4a6637682.html, MC430F14开发板/******************************************************************* ******/ #include //初级用户要习惯采用宏定义,以方便的编写和修改 #define keyio 0xf8 //定义按键IO口,Px0-Px2 IO口. #define key_1 0xfe //定义返回键值1 #define key_2 0xfd //定义返回键值2 #define key_3 0xfb //定义返回键值3 //声明子程序

单片机程序实例程序实例

单片机程序实例程序实例 以简单的52单片机LCD例程为例,将下面的程序模块化。将延时函数独立成一个模块,为了使程序简化,将所有的和LCD相关的函数(包括LCD初始化函数、写命令函数、写数据函数、显示函数等)独立成一个模块。 #include #include #define uchar unsigned char #define uint unsigned int sbit rs = P2^5; sbit rw = P2^6; sbit e = P2^7; uint i; /*********************************************/ void delay1ms(uint z) { //延迟子程序0.5MS uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /*********************************************/ void write_com(uchar com) { rs=0; rw=0; e=0; P0=com; delay1ms(1); e=1; delay1ms(1); e=0; delay1ms(1); } void write_date(uchar date) { rs=1; rw=0; e=0; P0=date; delay1ms(1); e=1; delay1ms(1); e=0; delay1ms(1); } void init() { delay1ms(1); write_com(0x30); delay1ms(1);

(完整版)MSP430单片机课程设计

文华学院学生课程考查报告 考查课程:MSP430单片机应用设计 设计题目:基于MSP430单片机的温度测量仪设计 专业班级:** 学号:**** 姓名: ** 指导教师:** 实验日期:2016年5月8日

基于MSP430单片机的温度测量仪设计 文华学院 摘要 MSP430单片机是德州公司最新开发的具有16位总线带FLASH的单片机,由于它的性价比和集成度高,受到广大技术开发人员的青睐。它的可靠性能比较好,加强电干扰运行不受影响,适应工业级的运行环境,在各种行业中都占有重要的位置,越来越多的领域应用到以单片机为控制核心,用液晶显示作为显示终端的数字化控制设备,通过单片机对被控制对象进行智能控制。 MSP430单片机将会在工程技术应用中得到广泛的应用。而且,它是通向DSP 系列的桥梁,随着自动控制的低功耗化和高速化,MSP430系列单片机将会得到越来越多人的喜爱。 通过这次毕业设计,我对MSP430单片机有了完整的了解,并且着重了解了MSP430F149芯片的原理图以及它的工作原理,对内部的硬件资源和自身的汇编语法进行了实验,把它和DS18B20温度传感器联系在一起实现了温度的测量以及报警。 关键词:MSP430;超低功耗;单片机;DS18B20 Abstract Texas MSP430 microcontroller is the latest development of a 16-bit bus with FLASH MCU, due to its cost-effective and highly integrated, by the majority of technology developers of all ages. Its reliability is better, enhancing electrical interference unaffected, adapt industrial-grade operating environment, in a variety of industry occupies an important position in both, applied to more and more areas to microcontroller core, with LCD as a digital control display terminal equipment, through the controlled object MCU intelligent control. MSP430 microcontroller applications engineering technology will be widely used. And, it is a bridge leading DSP family, with automatic control, low power consumption and high speed, MSP430 MCU will get more and more people's favorite.

单片机的一些常用程序

单片机复习程序1、从左到右的流水灯 /* 名称:从左到右的流水灯 说明:接在P0 口的8 个LED 从左到右循环依次点亮,产生走 马灯效果 */ #include #include #define uchar unsigned char #define uint unsigned int//延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序

void main() { P0=0xfe; while(1) { P0=_crol_(P0,1); //P0 的值向左循环移动DelayMS(150); } } 2、交通灯 /* 名称:LED 模拟交通灯 说明:东西向绿灯亮若干秒,黄 灯闪烁5 次后红灯亮,红灯亮后,南北向由红灯变为绿灯,若干秒后南北 向黄灯闪烁5 此后变红灯,东西向变绿灯,如此重复。 */#include #define uchar unsigned char #define uint unsigned int sbit RED_A=P0^0; //东西向灯 sbit YELLOW_A=P0^1; sbit GREEN_A=P0^2;

sbit RED_B=P0^3; //南北向灯 sbit YELLOW_B=P0^4; sbit GREEN_B=P0^5; uchar Flash_Count=0,Operation_Type=1; //闪烁次数,操作类型变量 //延时 void DelayMS(uint x) { uchar i; while(x--) for(i=0;i<120;i++); } //交通灯切换 void Traffic_Light() { switch(Operation_Type) { case 1: //东西向绿灯与南北向红灯亮 RED_A=1;YELLOW_A=1;GREEN_A=0; RED_B=0;YELLOW_B=1;GREEN_B=1; DelayMS(2000); Operation_Type=2; break;

单片机程序分析(绝对经典)

一、读程序题(每小题4分,共20分) 1.执行下列程序段后,(P1)=_______。 MOV P1,#5DH CPL P1.1 CPL P1.2 CLR P1.6 SETB P1.7 2.执行下列程序段后,(A)=_______,(CY)=____。 MOV A,#C5H RL A 3.下列程序段执行后,(R0)=_______,(7EH)=____,(7FH)=_______。 MOV R0,#7EH MOV 7EH,#0FFH MOV 7FH,#40H 1NC @R0 1NC R0 1NC @R0 4.已知(SP)=60H,子程序SUBTRN的首地址为0345H,现执行位于0123H的ACALL SUBTRN双字节指令后,(PC)=___,(61H)=_______,(62H)= ____。 5.阅读下列程序,说明其功能。 MOV R0,#data MOV A,@R0 RL A MOV R1,A RL A RL A ADD A,R1 MOV @R0,A RET 读程序题(每小题4分,共20分) 1.(P1)=9BH 2.(A)=8BH(或10001011B) (CY)=不影响 3.(R0)=7FH (7EH)=00H (7FH)=41H 4.(PC)=0345H (61H)=25H (62H)=01H 5.(data)×10操作 二、使用简单指令序列完成以下操作(12分) 1.请将片外RAM20H—25H单元清零 2.请将ROM3000H单元内容送R7 使用简单指令序列完成以下操作(12分,每小题6分) 1.MOV R0,#20H

CLR A LOOP:MOVX @R0,A INC R0 DJNZ R7,LOOP 2.MOV DPTR,#3000H CLR A MOVC A,@A+DPTR MOV R7,A 三、使用简单指令序列完成以下操作(12分) 1、将20H单元清零 MOV 20H,#00H 或 CLR A MOV 20H, A 2、将片外RAM2000H中的低字节与片内20H中的低字节交换。 MOV DPTR,#2000H XCHD A,@R0 MOV R0,#20H MOVX @DPTR,A MOVX @DPTR,A 3、已知某端口地址为2FFFH,将片内RAM20H的内容写到该端口中。 MOV A, 20H MOVX DPTR, #2FFFH MOVX @DPTR, A 4、把DPTR的内容压入堆栈 PUSH DPH PUSH DPL 四、读程序(每小题5分,共10分) 1、设(A)=38H,R0=28H,(28H)=18H,执行下列程序后,(A)= 0E7H ORL A,#27H ANL A,28H XCHD A,@R0 CPL A 2、设(A)=38H,(20H)=49H,PSW=00H,(B)=02H,填写以下中间结果。 SETB C ADDC A, 20H (A)= 82H (CY)= 0 (AC)= 1 RLC A (A)= 04H (CY)= 1 (P)= 1 MUL AB (A)= 08H (B)= 00H (OV)= 0 五、分析程序并写出结果:(共4题,每题5分) 已知(R0)=20H, (20H ) =10H, (P0) =30H, (R2) =20H, 执行如下程序段后( 40H ) = MOV @R0 , #11H MOV A , R2 ADD A , 20H MOV PSW , #80H SUBB A , P0 XRL A , #45H MOV 40H , A 2. 已知( R0 )=20H, (20H )=36H, (21H) =17H, (36H) =34H, 执行过程如下:

MSP430单片机题目答案整理(大部分)讲解学习

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 In structio n Set Compute的缩写, MSP430单片机属于RISC。具有16位数据总线、7种寻址模式,27条指令 3. 对MSP430单片机的内存访问时,可以有哪几种方式?读写字数据有什么具体要求? 字,字节,常字。字访问地址必须是偶数地址单元。 4. M SP430单片机的中断向量表位于什么位置?其中存放的是什么内容?中断向量 表:存放中断向量的存储空间。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. 写出给定指令或指令序列的执行结果。

51单片机经典程序分析

#include #include #define uint unsigned int #define uchar unsigned char uchar code table[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x 00}; // 逐个点亮0~7 uchar code table1[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01, 0x00}; // 逐个点亮7~0 uchar code table2[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f, 0xff}; // 逐个灭0~7 uchar code table3[]={0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe, 0xff}; // 逐个灭7~0 /************************************ ***********************/ void delay(uint t); //延时 void zg(uint t,uchar a);//两边逐个亮 void qs(uint t,uchar a);//全部闪烁 void zgxh(uint t,uchar a); // 逆时针逐个点亮 void zgxh1(uint t,uchar a); // 顺时针逐个点亮 void djs(uint t,uchar a); //对角闪 void lbzgm(uint t,uchar a);//两边逐个灭 void sszgm(uint t,uchar a); // 顺时针逐个灭void nszgm(uint t,uchar a); // 逆时针逐个灭void sztl(uint t,uchar a);//顺时逐个同步亮void nztl(uint t,uchar a);//逆时逐个同步亮void sztm(uint t,uchar a);//顺时逐个同步灭void nztm(uint t,uchar a);//逆时逐个同步灭void hwzjl(uint t,uchar a); //横往中间亮 void hwzjm(uint t,uchar a); //横往中间灭void swzjl(uint t,uchar a); //竖往中间亮 void swzjm(uint t,uchar a); //竖往中间灭void nzdl(uint t,uchar a); //逆时逐段亮 void nzdgl(uint t,uchar a); //逆时逐段一个点亮 void jgs(uint t,uchar a); //间隔闪 /************************************ **********************/ void zg(uint t,uchar a)//两边逐个亮{ uchar i,j; for(j=0;j

单片机实验程序

一 1.修改例程一的源程序 (1)将A寄存器的初值改为80H(正逻辑,数据位为1 表示发光 二极管点亮),再对源程序进行简单修改,使程序运行后发光二极管情况与修改前相同。 (2)将LED向左循环移位点亮改为向右循环移位点亮 (3)加快LED循环移位点亮的速度 $include(C8051F020.inc) ;C8051F02x 系列单片机信息头文件包含伪指令 INIT: LCALL Init_Device 调用初始设置子程序 (1)MOV A,#080H ;赋初始值并在发光二极管上显示该数值 CPL A MOV P3,A LOOP: CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY (2)RL A ;A 寄存器内容右移1 位并送1 发光二极管显示MOV P3,A AJMP LOOP ;无限循环 DELAY: MOV R5,#0H ;延时子程序 D1: MOV R6,#00H DJNZ R6,$ DJNZ R5,D1 RET $include(Init_Device.inc);初始设置子程序文件包含伪指令 END (3)可删除几个CALL DELAY 语句即可加快循环速度

2.将例程二0——F 的循环显示改为0——9的循环显示 $include(C8051F020.inc) ;C8051F02x 系列单片机信息头文件包含伪指令 ORG 0000H LJMP INIT TAB:DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H;字符段码表0-7 DB 080H,090H ;字符段码表8-F INIT: lcall Init_Device ;调用初始设置子程序 INIT1: MOV R1,#00H ;操作数据初始值 MOV A,R1 MAIN: MOV DPTR,#TAB;读取与A 中数值对应的显示段码 MOVC A,@A+DPTR MOV P5,A ;段码送并行口1显示 CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY CALL DELAY INC R1 ;操作数据(R1)增1 MOV A,R1 C C C C C,#0AH,MAIN;检查操作数据是否大于显示范围(F) SJMP INIT1 ;无限循环 D D D D D: MOV R5,#0H ;延时子程序 D1: MOV R6,#0H DJNZ R6,$ DJNZ R5,D1 RET $include(Init_Device.inc);初始设置子程序文件包含伪指令 END

相关文档
最新文档