单片机符号位数

合集下载

单片机指令部分例题

单片机指令部分例题

• /(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 个定时器。

51系列单片机指令系统

51系列单片机指令系统

MOV DPTR,#1000H MOVX A,@DPTR INC DPTR, MOVX @DPTR,A 7、程序存储器向累加器A传送指令 MOVC A,@A+DPTR MOV DPTR,#100H MOV A,R0 MOVC A,@A+DPTR ORG 0100H. DB 0,1,4,9,16,25 8、堆栈操作指令 PUSH direct POP direct 第一条指令称之为入栈指令,就是将direct中的内容 送入堆栈中,第二条指令称之为弹出指令,就是将堆栈 中的内容送回到direct中。
位寻址时,操作数是二进制数的某一位,其位地 址出现在指令中,例如指令 • SETB bit ;(bit) ← l • 51系列单片机可用于位寻址的空间是内部RAM的可 位寻址区和SFR区中的字节地址可以被8整除(即地址以 “0”或“8”结尾)的寄存器所占空间,寻址方式如表 2-2所示。
表2-2 寻址方式一览表
寻 址 方 式
寻 址 范 围
R0-R7 ,DPTR ACC,B,C(CY位)
内部RAM 00H-7FH 特殊功能寄存器 80H-FFH 内部RAM位寻址区 (20H-2FH): 位地址00H-7FH 可寻址的特殊功能寄存器: 位地址 80H-F7H 以数据指针表示操作数 内部RAM 00H-7FH 外部RAM或I/O端口 00H-FFH / 0000H-FFFFH
图2-3 寄存器间接寻址
图2-4 立即寻址
4、立即寻址

立即寻址时,指令中直接给出操作数。例如指令 MOV A,#76H ;数据76H送累加器 A。 • 立即数寻址过程如图2-4所示。
5、变址寻址

变址寻址时,指定的变址寄存器的内容与指令中 给出的偏移量相加,所得的结果作为操作数的地址。 例如指令MOVC A, @A+DPTR ;((A)+(DPTR))送 A。变址寻址过程如图2-5所示。 不论用DPTR或PC作为基址指针,变址寻址方式都 只适用于51系列单片机的程序存储器,通常用于读取 数据表也就是将程序存储器中的数送入A中。因此也称 为查表指令,常用此指令来查一个已做好在程序存储 器中的表格,这条指令采用变址寻址。

单片机带符号数的表示方法

单片机带符号数的表示方法

单片机带符号数的表示方法
单片机中的带符号数表示通常约定一个数的最高位为符号位。

如果该位为0,则表示正数;如果该位为1,则表示负数。

在单片机中,带符号数的表示方法主要有原码、反码和补码3种。

原码就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。

例如,+11的原码表示为,-11的原码表示为。

反码是符号位加上真值的绝对值后,符号位不变,其余各位取反。

例如,
+11的反码表示为,-11的反码表示为。

补码是在反码的基础上加1。

正数的补码与其原码相同,负数的补码是其反码加1。

例如,+11的补码表示为,-11的补码表示为。

需要注意的是,在单片机中只有8位二进制数来表示有符号数,其中最高位为符号位,其余7位表示数值。

因此,可表示的数值范围为- 127~+ 128。

以上信息仅供参考,建议咨询电子计算机相关专业人士获取更多准确信息。

单片机之补码

单片机之补码

本文说明一个基本的问题,补码的问题。

需要说明一点补码是对负整数在计算机中存储的一种形式;另一种形式是负数在计算机中可以用符号+负数绝对值的形式表示一个负数;比如(-3: 1000 0011存储)但是这种表示的负数有两个零+0,-0,最要命的一点是不能做算术运算。

比如10-3=10+(-3)=0000 1010+ 1000 0011=1000 1101=-13显然是错的。

所以负整数必须以补码存储。

负数在计算机中如何表示?举例来说,+8在计算机中表示为二进制的1000,那么-8怎么表示呢?很容易想到,可以将一个二进制位(bit)专门规定为符号位,它等于0时就表示正数,等于1时就表示负数。

比如,在8位机中,规定每个字节的最高位为符号位。

那么,+8就是00001000,而-8则是10001000。

但是,随便找一本《计算机原理》,都会告诉你,实际上,计算机内部采用2的补码(Two’s Complement)表示负数。

在讲补码之前简单介绍机器数,真值,原码和反码的背景。

1、机器数一个数在计算机中的二进制表示形式, 叫做这个数的机器数。

机器数是带符号的,在计算机用一个数的最高位存放符号, 正数0,负数为1。

比如,十进制中的数+3 ,计算机字长为8位,转换成二进制就是0000 0011。

如果是-3 ,就是1111 1101 。

那么,这里的00000011 和1111 1101 就是机器数。

机器数包含了符号和数值部分。

2、真值因为第一位是符号位,所以机器数的形式值就不能很好的表示真正的数值。

例如上面的有符号数1111 1101,其最高位1代表负,其真正数值是-3 而不是形式值253(1111 1101按无符号整数转换成十进制等于253)。

所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。

例:0000 0001的真值= +000 0001 = +1,1000 0001的真值= –0111 1111 = –127;这里所说的比如-3二进制代码为10000011,就是我们计算机里面对-3表示的源码。

单片机基础知识概述

单片机基础知识概述

第1章 单片机基础知识概述内容概述:本章主要介绍单片机的定义、发展历史,单片机分类方法、应用领域及发展趋势,单片机中数的表示和运算方法,基本逻辑门电路,以及与单片机系统仿真工具Proteus相关的内容。

教学目标:●了解单片机的概念及特点;●掌握单片机中数的表示和运算方法及基本逻辑门电路;●初步了解Proteus软件的功能。

1.1 单片机概述1.1.1 单片机及其发展概况1.什么是单片机单片机是在一块半导体硅片上集成了计算机基本功能部件的微型计算机。

随着大规模集成电路技术的发展,可以将中央处理器(CPU)、数据存储器(RAM)、程序存储器(ROM)、定时/计数器及输入/输出(I/O)接口电路等主要计算机部件,集成在一块电路芯片上。

虽然只是一个芯片,但从组成和功能上,单片机都已具有了微机系统的基本含义。

单片机自从问世以来,性能都在不断提高和完善,它不仅能够满足很多应用场合的需要,而且具有集成度高、功能强、速度快、体积小、使用方便、性能可靠、价格低廉等特点。

因此,在工业控制、智能仪器仪表、数据采集和处理、通信、智能接口、商业营销等领域得到广泛应用,并且正在逐步取代现有的多片微机应用系统。

2.单片机的发展单片机诞生于1971年,大体经历了SCM、MCU和SoC三大阶段。

SCM(Single Chip Microcomputer)即单片微型计算机阶段,其主要的技术发展方向是:寻求最佳单片形态的嵌入式系统体系结构。

在开创嵌入式系统的发展道路上,Intel公司功不可没,奠定了SCM与通用微机完全不同的发展道路。

这一阶段最有代表性的产品是Intel公司的8位MCS-51系列单片机。

MCU(Micro Controller Unit)即微控制器阶段,其主要的技术发展方向是:不断推进在嵌入式系统中集成各种外围电路与接口电路的能力,以满足智能化控制的需求。

在此阶段中,Philips 公司以其在嵌入式应用方面的强大实力,推出了基于MCS-51内核的微控制器系列产品,使单片机进入MCU阶段。

单片机符号含义

单片机符号含义

符号含义Rn R0~R7寄存器n=0~7Direct 直接地址,内部数据区的地址RAM(00H~7FH)SFR(80H~FFH) B,ACC,PSW,IP,P3,IE,P2,SCON,P1,TCON,P0@Ri 间接地址Ri=R0或R1 8051/31RAM地址(00H~7FH) 8052/32RAM地址(00H~FFH)#data 8位常数#data16 16位常数Addr16 16位的目标地址Addr11 11位的目标地址Rel 相关地址bit 内部数据RAM(20H~2FH),特殊功能寄存器的直接地址的位指令介绍指令字节周期动作说明一、算数运算指令1.ADD A,Rn 1 1 将累加器与寄存器的内容相加,结果存回累加器2.ADD A,direct 2 1 将累加器与直接地址的内容相加,结果存回累加器3.ADD A,@Ri 1 1 将累加器与间接地址的内容相加,结果存回累加器4.ADD A,#data 2 1 将累加器与常数相加,结果存回累加器5.ADDC A,Rn 1 1 将累加器与寄存器的内容及进位C相加,结果存回累加器6.ADDC A,direct 2 1 将累加器与直接地址的内容及进位C相加,结果存回累加器7.ADDC A,@Ri 1 1 将累加器与间接地址的内容及进位C相加,结果存回累加器8.ADDC A,#data 2 1 将累加器与常数及进位C相加,结果存回累加器9.SUBB A,Rn 1 1 将累加器的值减去寄存器的值减借位C,结果存回累加器10.SUBB A,direct 2 1 将累加器的值减直接地址的值减借位C,结果存回累加器11.SUBB A,@Ri 1 1 将累加器的值减间接地址的值减借位C,结果存回累加器12.SUBB A,#data 2 1 将累加器的值减常数值减借位C,结果存回累加器13.INC A 1 1 将累加器的值加114.INC Rn 1 1 将寄存器的值加l15.INC direct 2 1 将直接地址的内容加116.INC @Ri 1 1 将间接地址的内容加117.INC DPTR 1 1 数据指针寄存器值加1说明:将16位的DPTR加1,当DPTR的低字节(DPL)从FFH溢出至00H时,会使高字节(DPH)加1,不影响任何标志位18.DEC A 1 1 将累加器的值减119.DEC Rn 1 1 将寄存器的值减120.DEC direct 2 1 将直接地址的内容减121.DEC @Ri 1 1 将间接地址的内容减122.MUL AB 1 4 将累加器的值与B寄存器的值相乘,乘积的低位字节存回累加器,高位字节存回B寄存器说明:将累加器A和寄存器B内的无符号整数相乘,产生16位的积,低位字节存入A,高位字节存入B寄存器。

单片机数制基本知识

单片机数制基本知识

(3)非运算
规则为“按位取反”,即运算结果为参与运算的操作数取反后的值。具体规则如下:
(4)异或运算
0 =1, 1 =0
原则为“相异为1,相同为0”,即当两个操作不同时,结果为1;当两个操作数相同时,结
果为0。具体规则如下:
0⊕0=0,0⊕1=1,1⊕0=1,1⊕1=0
8
实际应用中存在正负数的问题,由于计算机只能识别0和1代码,因此,若要在计算机中表示正 负数,需要指定一位二进制位为符号位。通常指定二进制数据的最高位为符号位,最高位为0表示正 数,最高位为1表示负数。
其中:0的原码不唯一,即[+0]原=00000000B,[−0]原=10000000B。
9
(4)反码 正数的反码与该数的原码相同;负数的反码等于该数的原码保留符号位,其余位按位取反。
反码通常用[X]反表示。例如: X=+101,则[X]反=[X]原=01100101B X= - 101,则[X]原=11100101B,[X]反=10011010B
十六进制数 0 1 2 3 4 5 6 7
十进制数 8 9 10 11 12 13 14 15
4位二进制数 1000 1001 1010 1011 1100 1101 1110 1111
十六进制数 8 9 A B C D E F
6
1.算术运算
(1)二进制加法运算 根据“逢二进一”的原则,二进制加法法则为: 0+0=0,0+1=1,1+0=1,1+1=10(为2时向高位进一位)
1010
1010
0111
1101
8
1000
1011
1011
1110
1110

单片机数据类型

单片机数据类型

单片机数据类型单片机数据类型1、字节型:单片机中最常用的数据类型,可用来存放一个字节(8位)的二进制数据,其取值范围是-128~127或者0~255(未符号和有符号分别)。

2、字型:存放两个字节(16位)的二进制数据,取值范围是-32768~32767或者0~65535(未符号和有符号分别)。

常用于单片机的内存单元的存储,用来记录数据或者存储一些内存地址,有的单片机可以把字型看作两个字节组成的数组,例如80C51的字型可以作为4个字节的有符号数。

3、位型:位型是一个特殊的变量,通常只有0和1两种情况,但是位型并不只代表一个位,在不同的单片机中,位型变量可以用一个字节(8位),把这一个字节中8位分别表示称为8个位变量(B0,B1,B2,B3,B4,B5,B6,B7),每一位上都可以储存一个二进制的数(0或1),便于状态的控制。

4、双字型:是指占用4个字节(32位)的二进制数据,取值范围是-2147483648~2147483647或者0~4294967295(未符号和有符号分别),是一种大数据类型,可以用于更好的实现图像处理,主要用于PC机数据类型转换,因为单片机中内存存储能力有限,不能用于单片机系统中。

5、浮点型:浮点型数据类型是单片机中具有浮点运算能力的型号支持的数据类型,存储一个浮点数的格式是一般定义的IEEE754标准,占用4个字节(32位),存放范围非常大,单片机浮点型变量最多可以表示6位小数。

6、贝吉塔型:贝吉塔型数据类型是用于控制单片机定时器的数值,由于单片机定时器模块的频率固定,一般来说只能使用16位的定时器数据类型(2个字节),它的取值范围是0~65535,比字型稍小,但仍然可以满足单片机定时器的大部分要求。

单片机数制

单片机数制
2
二、有符号数

计算机中有符号数的表示

把二进制数的最高位定义为符号位

符号位为 0 表示正数,符号位为 1 表示负数

连同符号位一起数值化了的数,称为机器数。 机器数所表示的真实的数值,称为真值。
(在以下讲述中,均以8位二进制数为例)
3
[例]:
真值 机器数
+52 = +0110100 = 0 0110100 符号位 数值位
-52 = -0110100 = 1 0110100
4
1. 符号数的表示
对于符号数,机器数常用的表示
方法有原码、反码和补码三种。 数X的原码记作[X]原,反码记作 [X]反,补码记作[X]补。
注意:对正数,三种表示法均相同。 它们的差别在于对负数的表示。
5
•原码[X]原

定义 符号位:0表示正,1表示负; 数值位:真值的绝对值。

20
非数值数据的表示

计算机中除了能够处理数值数据以外,还可以 处理文字、语音、图像等各种信息,这些信息 统称为非数值数据。 非数值数据在计算机中也必须以二进制形式表 示,非数值数据的表示本质上是编码的过程。

21
ASCII码—美国标准信息交换代码
ASCII 字符表 L 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 H 000 NUL SOH STX ETX EOT ENG ACK BEL BS HT LF VT FF CR SO SI 001 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US 010 SP ! " # $ % & ' ( ) * + , . / 011 0 1 2 3 4 5 6 7 8 9 : ; < = > ? 100 @ A B C D E F G H I J K L M N O 101 P Q R S T U V W X Y Z [ \ ] 110 ` a b c d e f g h i j k l m n o 111 p q r s t u v w x y z { | } ~ DEL

单片机原理第二章作业

单片机原理第二章作业

2.7何谓程序状态字?它的符号是什么?它的位置在哪里?它的各位的含义是什么?为1,0各代表什么?各在何种场合有用?解:程序状态字PSW是一个8位寄存器,包含了许多程序状态信息,指在电脑中,一段包含被操作系统和潜在硬件使用的程序状态信息的内存或硬件区域。

一般用一个专门的寄存器来指示处理器状态。

符号是PSW。

位于微处理器中的运算器中。

各位的含义为:进位标志位C(PSW.7),为1表示其运算结果的最高位D7有进位或借位,否则为0,在进行位数操作运算时起作用。

辅助进位标志AC(PSW.6),为1表示低半字节的最高位D3有借位或进位,否则为0,在进行BCD码运算而进行二-十进制调整时起作用。

软件标志FO(PSW.5),用户定义的一个状态标志,可通过软件对它进行置位清零,在编程时也可测试其是否建起而进行程序分支。

工作寄存器组选择位RS1,RS0(PSW.4,PSW.3),可借软件置位或清零,以选定4个工作寄存器组中的一个投入工作。

溢出标志OV(PSW.2),为1表示它已经超过了累加器以补码形式表示一个符号数的范围。

为0表示最高位,最高次二位有借位或进位。

是作为符号数加法,减法时由硬件置位或清除,以指示运算结果是否溢出。

奇偶标志P(PSW.0),其中D1位未定义。

在奇偶标志中,为1表示累加器中1的个数为奇数,0表示为偶数。

2.16 E___A___引脚的作用是什么?在下列四种情况下,E___A___引脚各应该接何种电平?1)只有片内ROM2)只有片外ROM3)有片内ROM和片外ROM4)有片内ROM和片外ROM,片外ROM所存为调试程序解:E___A___是片外程序存储器选用端。

引脚有效(低电平)时只选用片外程序存储器。

否则计算机上电或复位后先选用片内程序存储器。

1)只有片内ROM时,E___A___=1,接高电平2)只有片外ROM时,E___A___=0,接低电平3)有片内ROM和片外ROM时,E___A___=1,接高电平4)有片内ROM和片外ROM,片外ROM所存为调试程序,此时计算机处于调试状态,E___A___=0,接低电平。

  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
相关文档
最新文档