单片机符号位数

合集下载

单片机指令部分例题

单片机指令部分例题

• /(A)+(DPTR)=2000H+09H=2009H,对应 的查表内容为51H(81)送入累加器A中。
例2:若在外部ROM/EPROM中,从2000H单元开 始依次存放0-9的平方值,以PC作为基址寄存器查 表。设:MOVC指令所在地址(PC)=1FF0H。
• 偏移量=2000H-(1FF0H+1)=0FH • MOV A,#09H ;(A)←09H • ADD A,#0FH ;A←9H+FH=18H(24),作
表首地址
• 解:偏移量=2000H-(1FF0H+1)=0FH • MOV A , # 09H • ADD A , # 0FH • MOVC A , @ A + PC
• 执行结果(PC)=1FF1H

(A) = 51H
4、若 (R0)=30H, (30H) = 4AH , (A) =28H
• XCH A , @R0 ; • XCHD A , @R0 ; • SWAP A ; A=82H
;(R1) ← (A)
• MOV B , @R1 ; (B) ← ((R1))
• MOV @R1 , P1 ;((R1)) ← (P1)
• MOV P2 , P1
;(P2) ← (P1)
• MOV 10H , #20H ; (10H) ← 20H
• 结果:(R0)=30H , (R0)=(A)=40 H , (B)=10H , (40H)=(P1)=(P2)=CAH , (10H)=20H
• XCH A,#R0 • ;结果:(A)=4AH,(30H)=28H
• XCHD A,#R0 • ;结果:(A)=2AH,(30H)=48H
• XWAP A • ;结果:(A)=82H

单片机常用指令

单片机常用指令

计算机通过执行程序完成人们指定的任务,程序由一条一条指令构成,能为CPU识别并执行的指令的集合就是该CPU的指令系统。

MCS-51单片机汇编语言指令格式:操作符目的操作数,源操作数指令中的常用符号Rn: n=(0~7),表示当前工作寄存器R0~R7中的一个Ri: i=(0、1),代表R0和R1寄存器中的一个,用作间接寻址寄存器dir : 8 位直接字节地址(片内RAM 和SFR )#data: 8位立即数,即8位常数。

可以为2进制(B)、10进制、16进制(H)、字符(‘ ’)#data16: 表示16位立即数,即16位常数,取值范围为#0000H~#0FFFFHaddr16 : 表示16位地址addr11 : 表示11位地址rel : 相对偏移量(为一字节补码)用于相对转移指令中bit :位地址,在位地址空间中。

$: 表示当前指令的地址。

寻址方式1、立即寻址指令中直接给出操作数的寻址方式。

在51系列单片机的指令系统中,立即数用一个前面加“#“号的8位数(#data,如#30H)或16位数(#data16,如#2052H)表示。

立即寻址中的数,称为立即数。

例如指令:MOV A,#30H2、直接寻址操作数的地址直接出现在指令中。

寻址对象:①内部数据存贮器:使用它的地址。

②特殊功能寄存器:既可使用它的地址,也可以直接使用寄存器名。

3、寄存器寻址操作数存放在寄存器中。

寻址对象:A,B,DPTR,R0~R7 。

B 仅在乘除法指令中为寄存器寻址,在其他指令中为直接寻址。

A 可以寄存器寻址又可以直接寻址,直接寻址时写作ACC例如:MOV A,R0 ;R0→A,A、R0均为寄存器寻址,机器码E8MUL AB ;A*B→BA,A、B为寄存器寻址,机器码A4MOV B,R0 ;R0→B,R0为寄存器寻址,B为直接寻址机器码88F0,其中F0为B的字节地址(见表1-2)PUSH ACC ;A的内容压入堆栈机器码C0E04、寄存器间址操作数存放在以寄存器内容为地址的单元中。

常用PIC系列8位单片机芯片引脚符号的功能

常用PIC系列8位单片机芯片引脚符号的功能

常用PIC系列8位单片机芯片引脚符号的功能常用PIC系列8位单片机芯片引脚符号的功能类别:单片机/DSP一、关于I/O口符号PIC单片机系列封装引脚最少的是8引脚(如PIC12C5XX和PIC12C6XX),多的可达84引脚(如PIC17C76X),其中I/O(输入/输出)口线按PIC单片机产品型号不同,其口线数量也不相同。

8脚封装的I/O 口线是6根线,而84脚封装的I/O线多达66根线。

这些口线符号分别按英文字母顺序排列编号,简称A口、B口、C口、D口、E口、F口……,每个口是8位的,但不一定占满8位。

这些口在封装引脚图的标注上均在各口之前加有R 符号。

例如B口标注为RB0、RB1、RB2……RB7;E口为RE0、RE1……RE7;G口为RG1、RG2……;而对8脚封装的单片机共有6根I/O口线,其引脚图的标注与上略有不同而是GP0~GP5。

上述的各口线都是可独立编程的双向I/O口线。

二、引脚的复用功能和符号单片机的信号引脚是单片机外特性的体现,在硬件上用户只能使用引脚,通过引脚的连接组建单片机系统。

PIC8位单片机系列和MCS-51系列单片机一样,其引脚除电源VDD、VSS为单一功能外,其余的信号引脚常是多个功能,即引脚的复用功能。

常见的引脚符号和主要功能如下:1MCLR/Vpp 清除(复位)输入/编程电压输入。

其中MCLR为低电平时,对芯片复位。

该脚上的电压不能超过VDD,否则会进入测试方法。

Vpp代表编程电压。

2OSC1/CLKIN 振荡器晶体/外部时钟输入端。

3OSC2/CLKOUT 振荡器晶体输出端,在晶体振荡方式接晶体,在RC方式输出OSC1频率的1/4信号CLKOUT。

4TOCK1TMRO计数器输入端,如不用,为了减少功能应接地或接VDD。

5TICK1TMR1时钟输入端。

6TIOSI TMR1的振荡输入端。

7TIOSOTMR1的振荡输出端。

8RD、WR、CS 分别代表并行口读信号、写信号和片选控制线。

单片机概念总结

单片机概念总结

概念(填空题)1.单片微型计算机(single chip microcomputer)简称单片机,它是把微型计算机的各个功能部件:中央处理器CUP,随机存储器RAM,只读存储器ROM,定时/计数器及I/O接口电路集成在一块芯片上,构成一个完整的微型计算机。

2.CPU处理字的长度,有4位,8位,16位,32位单片机。

提供小范围寻址空间(小于8KB)的单片机称为低档8位单片机,串行I/O接口或A/D转换以及可进行16KB以上寻址的单片机称为高档8位单片机.3.从制造工艺上看,MCS-51系列单片机采用两种半导体工艺生产,一种是HMOS工艺,即高速度,高密度短沟道MOS工艺;另一种是CHMOS工艺,即互补金属氧化物的HMOS芯片。

CHMOS是CMOS和HMOS的结合,除保持了HMOS高速度和高密度的特点外,还具有COMS低功耗的特点。

4.MCS—51单片机的系统结构如下:(1)8位CPU,片内时钟振荡器,频率范围1.2MHz~12 MHz;(2)4KB程序存贮器,片内低128B数据存贮器RAM;(3)片内有21个特殊功能存储器SFR;(4)可寻址外部程序存储器和数据存储空间各64KB;(5)4个8位并行I/O口,1个全双工串行口;(6)2个16位定时/计数器;(7)5个中断源,2个中断优先级;(8)位寻址功能,适用于布尔处理的位处理机。

5.ALE:地址锁存允许信号输出端。

用于锁存低8位地址信号。

ALE端就周期性地以时钟振荡频率的1/6固定频率向外输出正脉冲信号.6./EA:程序存储器地址允许输入端。

当EA为高电平时,CPU执行片内程序存储器指令,但当PC中的值超过0FFFFH时,将自动转向执行片外程序存储器指令;当EA为低电平时,CPU只执行片外程序存储器指令。

7.数据总线data bus:数据总线值片内外之间用来互相传送数据的总线,宽度为8位,每次恰好操作一个字节的8位数据,表示符号D7~D0,由P0口提供。

单片机符号表

单片机符号表

PC = progammer counter //程序计数器ACC = accumulate //累加器PSW = progammer status word //程序状态字SP = stack point //堆栈指针DPTR = data point register //数据指针寄存器IP = interrupt priority //中断优先级IE = interrupt enable // 中断使能TMOD = timer mode //定时器方式(定时器/计数器控制寄存器) ALE = alter (变更,可能是) 寄存器控制PSEN = progammer saving enable //程序存储器使能(选择外部程序存储器的意思)EA = enable all(允许所有中断)完整应该是enable all interrupt PROG = progamme (程序) SFR = special funtion register //特殊功能寄存器TCON = timer control //定时器控制PCON = power control //电源控制MSB = most significant bit//最高有效位LSB = last significant bit//最低有效位CY = carry //进位(标志)AC = assistant carry //辅助进位OV = overflow //溢出ORG = originally //起始来源DB = define byte //字节定义EQU = equal //等于DW = define word //字定义E = enable //使能OE = output enable //输出使能RD = read //读WR = write //写中断部分:INT0 = interrupt 0 //中断0INT1 = interrupt 1//中断1T0 = timer 0 //定时器0T1 = timer 1 //定时器1TF1 = timer1 flag //定时器1 标志(其实是定时器1中断标志位)IE1 = interrupt exterior //(外部中断请求,可能是)IT1 = interrupt touch //(外部中断触发方式,可能是)ES = enable serial //串行使能ET = enable timer //定时器使能EX = enable exterior //外部使能(中断)PX = priority exterior //外部中断优先级PT = priority timer //定时器优先级PS = priority serial //串口优先级助记符号的记忆方法表格列举法把44个指令助记符按功能分为五类,每类列表记忆。

单片机中无符号数运算出现的问题

单片机中无符号数运算出现的问题

单片机中无符号数运算出现的问题
在单片机编程中,我们经常会用到一些无符号数与有符号数的混合运算,另外我们所用的单片机很有可能是16位或者8位的,这样,编程时所用的一些变量的取值范围会对我们的运算有所限制.比如说8位的单片机无符号数最大值为255,有符号最大数为127;16位单片机无符号数最大值为65535,有符号数最大值为32767.对于32的单片机来说,因为我们一般所处理的值很少能超过有符号数的最大取值,所以比较少遇到下面出现的问题.
 在一些运算中,我们希望有些数能表示正负,这就得用有符号数,而有些数的取值会超过有符号数的最大值,这时我们就得用无符数来表示.下面是我编程时遇到的两个问题(用的是MC9S12XS128处理器,16位的单片机).
 变量的声明如下:
 int iError;
 unsigned int uiExpectSpeed;
 unsigned int uiCurrentSpeed;
 语句如下:
 iError = (uiExpectSpeed - uiCurrentSpeed)/3; //(1) 第一个语句。

单片机原理与应用(习题答案).

单片机原理与应用(习题答案).

《单片机原理与应用》课后习题参考答案第1章1.(1)15 (2)0.0859375 (3)14.68752.(1)10000100 (2)1011101001111 (3)100110100. 10113. 原码:正数的符号位用0表示,负数符号位用1表示,而数值位保持原样的机器码称为原码。

反码:在计算机中,对于正数,其反码的符号位为“0”,数值部分保持不变;对于负数,其反码除了在符号位上表示“1”外,数值部分的各位都取与它相反的数码,即“0”变“1”、“1”变“0”。

也就是说:正数的反码与它的原码相同;负数的反码由其绝对值按位求反后得到。

补码:在计算机中,对于正数,其补码的符号位为“0”,数值部分保持不变;对于负数,其补码除了在符号位上表示“1”外,数值部分的各位都取与它相反的数码,然后在最低位加“1”。

也就是说:正数的补码与它的原码相同;负数的补码由其对应的绝对值按位求反后加1得到。

4.(1)原码:000101110 反码:000101110 补码:000101110(2)原码:10.10101101 反码:10.01010010 补码:10.01010011(3)原码:00.101011 反码:00.101011 补码:00.1010115.[N]原=1.1010 [N]补=1.0110 N=-0.6256.原码0.1010-0.1011 = -0.0001补码0.1010+(1.0101)=(1.1111)7. 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。

微处理器是是指计算机内部对数据进行处理并对处理过程进行控制的部件,采用大规模集成电路工艺在一块或几块芯片上制成的中央处理器。

如果将构成微型计算机的各功能部件(CPU,RAM,ROM及I/O接口电路)集成在同一块大规模集成电路芯片上,一个芯片就是一台微型机,则该微型机就称为单片微型计算机。

8. MCS-51系列单片机是美国INTEL公司于1980年推出的一种8位单片机系列。

单片机复习题(参考答案)

单片机复习题(参考答案)

一、填空题1.计算机中最常用的字符信息编码是 ASCII码。

2.计算机中常用的码制有原码,反码和补码。

3. 十进制数29的二进制表示为 11101B。

4. 十进制数-29的8位补码表示为 11100011B 。

5.如果存储单元的数据位为8位,当它存放无符号数时,则该数的范围为 0~255 ;存放有符号数时,以原码表示的范围为 -127~127 ,以补码表示,范围为 -128~127 。

6.设X=87H,Y=E6H,则X与Y按位“或”运算为 E7H,X与Y的按位“异或”运算为 61H 。

(要求结果写成16进制形式)7.按照CPU对数据处理的位数,单片机通常分为 4 位、8 位、 16 位、 32 位等四类。

8.计算机的经典结构由运算器、控制器、存储器、输入设备、输出设备组成。

9.一个完整的计算机系统由硬件系统和软件系统两大部分组成。

10. 如果存储单元的数据位为16位,当它存放无符号数时,则该数的范围为 0~65536 。

11.计算机三大总线分别为地址总线、数据总线和控制总线。

二、单选题1.数据的存储结构是指(C)。

A、存储在外存中的数据B、数据所占的存储空间量C、数据在计算机中的顺序存储方式D、数据的逻辑结构在计算机中的表示2.真值0表示形式唯一的机器数是(C )。

A. 原码B.反码C.补码D.原码和反码3.计算机能直接识别的语言是(C)。

A.汇编语言 B.自然语言 C.机器语言 D.C语言一、填空题1. 复位后寄存器PC= 0 、SP= 7 、P0~P3= FFH 、PSW= 0 。

2.EA引脚的作用是允许访问片外程序存储器输入线。

3. 8051是 8 位的单片机,其内部存储器容量为 128B RAM, 4KB ROM。

4.当80C51引脚ALE信号有效时,表示从P0口稳定地送出了低8位地址。

5. 80C51单片机有两种复位方式,即上电自动复位和按键手动复位。

6.8051单片机片内包含 4KB ROM和 128B RAM(填容量), 2 个定时器。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
interrupt m:应该说这是最重要的修饰符了,加了 interrupt 后说明此函数是中断函数,即 函数返回指令是 reti。根据 m 值的不同而代表不同的中断。说明如下: interrupt 0 指明此函数是外部中断 0 interrupt 1 指明此函数是计时器/计数器 T0 中断 interrupt 2 指明此函数是外部中断 1 interrupt 3 指明此函数是计时器/计数器 T1 中断
interrupt 4 指明此函数是串行口中断 另外对于 52 单片机还有 interrupt 5,指明此函数是计时器/计数器 T2 中断
using n:这是指明函数变量放置在那组寄存器,51 系列共有 4 组寄存器(好像没有记错吧 ^_^)。那么可以分别用 using 0、using 1、using 2、using 3 来修饰。加上此修饰后是人工配置 寄存器组(适合牛人),如果不加此修饰则编译程序会自动分配寄存器组来放置变量(嘿嘿,适 合我这种菜鸟)。
本人也刚刚处于起步阶段,写的不是很全面,有些地方写得不是很好,可能也存在一定
错误,望大家批评指正。
下面附上一段简单程序,此程序在 P2.3 和 P2.6 脚输出 T=3ms 的方波,在 P2.0 管脚输出 T=1s 的方波,在 keil 下编译无误并在 s52 上稳定运行,所用晶振 12M^_^
#include<reg52.h> sbit ckl=P2^3; sbit ckr=P2^6; sbit p20=P2^0; unsigned int j; void clock_initial() reentrant { TR2=0; TH2=0xFA; TL2=0x24; TR2=1; } void main() { T2CON=0x00; //计时器 T2 工作方式选择 TF2=0; ckl=0; ckr=0; clock_initial(); ET2=1; EA=1; for( ; ; ); } void clk_int(void) interrupt 5 // 中断函数 { j=j+1; TF2=0; ckl=~ckl; ckr=~ckr; if(j==333) {p20=~p20; j=0;} clock_initial();函数部分简单的就这样了 Nhomakorabea举个例子如:
static unsigned char example 定义无符号字符型静态变量 example void timer_0(void) interrupt 1 using 1 samll 定义 T0 中断函数,使用第二组寄存器,所有缺省 变量参数均装入内部 RAM
以出现其中一个。 reetrant 是可重复调用修饰符。所谓可重复调用,指一个函数正在被其他函数(如 A 函数)
调用但还没有返回时,又有一个第三方函数(如函数 B)可以来调用此函数而不会被函数 A 改 变的变量而改变其运行结果,在 B 看来就像 A 不存在一样。加上 reetrant 后,说明此函数是 可重复调用的。显然 reetrant 修饰符会使单片机额外开发寄存器来保存第一次调用时变量的 值,会增加资源的开销。
【标识符】: 标识符是最灵活的地方了,可以是你喜欢的任何字母的组合,当然不能是 c 语言中已经定义 的符号。建议用拼音或英语单词,助于记忆。同种类型变量多了可以加下划线再数字的形式, 如 example_1、example_2、example_3 等。
【修饰符部分】也比较重要 完整的修饰符的形式是(reentrant)(interrupt m)(using n),括号中的修饰符可以同时出现也可
long
float
struct
union
void
bit
[标识符]
修饰符部分
(reentrant)(interrupt m)(using n) char
int
很重要的一张表,已经包括了 c51 中所有函数的定义,建议做成 txt 放在桌面上或者做 成 jpg 成桌面并在 CDEFG 盘、移动硬盘、u 盘、邮箱备份(有条件的还可刻录成光盘)^_^ 详细说明如下: 【存储类型说明符】有 static 和 extern 两种。这两种 c 语言中已经学过,不详细说明了。static 指静态变量,本函数内部有效。extern 是外部变量,全局有效。另外如果不加说明,则默认
用 c 来对单片机编程主要是引入了几个单片机特有的函数以及函数标识符、修饰符等, 所有指令遵循 c 语言的语法。本文主要说明了编程中经常用到的几个函数说明、中断等情况, 对于复杂的很少用到的函数及修饰符忽略不计,有兴趣我们一起研究下 ^_^
在 c51 函数定义中要考虑的东西比较多,不像我们在 c 语言中总是 int、int、int 看上去 不爽再 float,还是不爽就 double。c51 中不能随便就 int 了。要知道我们的程序最后是要烧 到单片机里面去的,那是 8 位机,可不是你 32 位的 cup ~-~
是 extern。
【类型说明】一共 11 种,比较重要。 1、unsigned char:无符号字符型,长度 8 位,大小范围 0-255。因为和单片机位数一致, 可以看成跟汇编里的 A 和 R 是一样的,是 c51 中用的最多的类型了。如果变量范围不超过 256,那你就毫不犹豫的在标识符前面写上它吧。 2、char:唯一和上面有区别的是它是有符号的 8 位,大小范围 -128-127。 3、unsigned int:无符号整型,长度 16 位,大小范围 0-65535。如果你实在没有办法把变 量控制在 256 之内,那么就用它吧。65535 应该够用了吧?如果还不够,对你的编程能力要 怀疑一下了。 4、int:就像 char 和 unsigned char 的区别一样,int 唯一和上面不同的只是符号问题。大小 范围-32768-32767。 5、void:无值型,也经常用到的一种类型,长度为 0。表示函数不返回值实际编程时用到以 上 5 种类型已经足够了,以下几种仅做友情介绍。 6、 unsigned long: 无符号长整型,长度 32 位 大小范围 0-4294967295(好大啊)。很少 用到,基本上不用到。要知道你定一个 unsigned long 我们的单片机可要让出 4 个寄存器给 你了,对于资源有限的 51 系列单片机,这是相当奢侈的做法。 7、long:不再多讲了,跟 5 的区别只是符号,也是基本上不用到的。 8、float:符点型 32 位。也是相当奢侈的做法,建议不用 9、double:符点型 64 位。最奢侈的做法! 10、struct:结构型。 11、union:联合型。
编译程序:推荐大家用 keil,只能用一句话来形容了,很好很强大!
关于头文件:c51 使用的头文件一般是 reg51.h 或 reg52.h,引用此头文件后在编程时可以使用 51 系列中已经定义的特殊寄存器名而不用事先声明,如 P1(注意,是大写哦)代表 P1 口,ET0 代表计时器/计数器 T0 的中断允许位,T0 代表计时器/计数器 T0 等等。
基于 51 系列单片机浅谈。(转)(2009-08-22 00:22:18)转载标签: 杂谈 基于 51 系列单片机的简单 c 语言编程 基于大家都学过了 c 语言和单片机,但我们学单片机的时候没有学到如何用 c 来编程序,
来替代难懂而又冗长的汇编指令。难道这么好的 c 就忍心搁置在记忆的深处浪费掉了?其实 用 c 来对单片机编程不是很难的一件事情,这只是一个接口问题,而这个接口则相当简单。 一般人花一两个小时可以基本掌握了,编几个简单的程序没有问题了。然后当你回头看看上 学期那些用汇编做的实验,真是 easy!
【存储模式】: 共 3 种,分别是 small、compact、large。 1. Small 模式 指所有缺省变量参数均装入内部 RAM,优点是访问速度快,缺点是空间有限,只适用于小 程序。 2. Compact 模式 所有缺省变量均位于外部 RAM 区的一页(256Bytes),具体哪一页可由 P2 口指定,在 STARTUP.A51 文件中说明,优点是空间较 Small 为宽裕速度 较 Small 慢,较 large 要快,是一种中间状态。 3. large 模式 所有缺省变量可放在多达 64KB 的外部 RAM 区,优点是空间大,可存变量多,缺点是速度 较慢。 可以按照自己程序的大小来定哪种模式。
}
关于位运算:在 keil 中定义位用 sbit 声明,第几位用符号“^”表示,如 sbit ck=P1^0 定义 ck 为 P1.0 口。bit 跟 sbit 的区别是一种是定义,一种是声明。bit 是定义一个变量,然后将寄存 器的某一位赋值给变量(如 P1.1 的值给变量 a)。而 sbit 是声明一个变量,声明后这个变量和 寄存器的某一位等价,地址空间相同(如 P1.1 声明变量 a,以后 a 可以代表 P1.1 使用)。还有 一个跟一般 c 语言不同点是在 keil 中为求反可以使用符号 “~”,当然也可以使用原来的“!”,其他与啊或啊都跟原来 c 语言相同,不再赘述。
c51 中一个完整的函数定义从先到后包括存储类型说明、类型说明、标识符、修饰符部 分、存储模式共 5 部分。完整的表格如下:
[存储类型说明符] [类型说明] [存储模式]
static
unsigned char
函数名
extern
small
unsigned
compact
int
large
unsigned long
相关文档
最新文档