3)程序状态字PSW(ProgramStatusWord)位52764301PCYACFORS1OVPSWRSO位标志名称功能1是存放算术运算的进位标志7CY进位标志位2.是在布尔运算中作累加位使用6AC低4位向高4位进位或借位时,置“1”辅助进位标志位5FO用户标志位用户可用软件自定义的一个状态标记4RS1当前寄存器区选择位选定4个工作寄存器组中的一个投入使用。3RSO同上。当前寄存器区选择位作算术运算时0V=0,未溢出。0V=1,溢出。做加2OV溢出标志位减法时,最高和次高二位之一有进位、借位时OV=1。保留位P=1,则累加器A中1的个数为奇数0P奇偶标志位P=0,则累加器A中1的个数为偶数
3)程序状态字PSW(Program Status Word) 位 7 6 5 4 3 2 1 0 PSW CY AC F0 RS1 RS0 OV - P 位 标志 名 称 功 能 7 CY 进位标志位 1.是存放算术运算的进位标志 2.是在布尔运算中作累加位使用 6 AC 辅助进位标志位 低 4 位向高 4 位进位或借位时,置“1” 5 F0 用户标志位 用户可用软件自定义的一个状态标记 4 RS1 当前寄存器区选择位 选定 4 个工作寄存器组中的一个投入使用。 3 RS0 当前寄存器区选择位 同上。 2 OV 溢出标志位 作算术运算时 OV=0,未溢出。OV=1,溢出。做加 减法时,最高和次高二位之一有进位、借位时 OV=1。 1 - 保留位 0 P 奇偶标志位 P=1,则累加器A中 1 的个数为奇数 P=0,则累加器A中 1 的个数为偶数
例2-1试分析执行指令MOVA,#7FHADD A, #47H后,A,C,AC,OV,P内容是什么?答:执行第一条指令后,将立即数7FH放入A中,执行第二条指令,将立即数47H与A中的数据相加结果送回A,同时影响PSW。01111111------7FH+ 0100 0111------47H11000110------C6H所以,A中内容是C6H:C=0,AC=1:次高位有进位最高位无进位,OV=1:执行第一条指令后,P=1,执行第二条指令后P=0
▪ 例2-1 试分析执行指令 MOV A,#7FH ADD A,#47H 后,A,C,AC,OV,P内容是什么? 答:执行第一条指令后,将立即数7FH放入A中,执 行第二条指令,将立即数47H与A中的数据相加, 结果送回A,同时影响PSW。 0111 1111-7FH + 0100 0111-47H 1100 0110-C6H 所以,A中内容是C6H;C=0,AC=1;次高位有进位, 最高位无进位,OV=1;执行第一条指令后,P=1, 执行第二条指令后P=0
二、CPU时序CPU时序就是CPU在执行指令时所需控制信号的时间顺序。单片机的时序定时单位从小到大依次为:振荡周期、时钟周期、机器周期和指令周期。MCS-51单片机共有111条指令,按照指令字节数和机器周期数可分为六类,即单字节单周期指令、单字节双周期指令、单字节四周期指令、双字节单周期指令、双字节双周期指令和三字节双周期指令
二、CPU时序 ▪ CPU时序就是CPU在执行指令时所需控制信号的时间 顺序。 ▪ 单片机的时序定时单位从小到大依次为:振荡周期、 时钟周期、机器周期和指令周期。 ▪ MCS-51单片机共有111条指令,按照指令字节数和 机器周期数可分为六类,即单字节单周期指令、单 字节双周期指令、单字节四周期指令、双字节单周 期指令、双字节双周期指令和三字节双周期指令
振荡周期为单片机提供定时信号的振荡源的周期或外部输入时钟信号的周期。fosc振荡器输出的振荡脉冲经2分频后成为单片机的内部时钟信号,其周期称为时钟周期,也叫状态周期(或状态S),它分为P1节拍和P2节拍6个时钟周期构成1个机器周期。执行一条指令所需的机器周期称为指令周期。单,T双,四周期。指令按长度分为单字节、双字节、三字节指令。(单字节单机器周期,单双,双单,双双三双,单四)如果采用12MHz的晶振,振荡周期为(1/12M)s,时钟周期为(2/12M)s,机器周期为(12/12M)s=1us
▪ 振荡周期为单片机提供定时信号的振荡源的周期或 外部输入时钟信号的周期。fosc ▪ 振荡器输出的振荡脉冲经2分频后成为单片机的内 部时钟信号,其周期称为时钟周期,也叫状态周期 (或状态S),它分为P1节拍和P2节拍。 ▪ 6个时钟周期构成1个机器周期。 ▪ 执行一条指令所需的机器周期称为指令周期。单, 双,四周期。指令按长度分为单字节、双字节、三 字节指令。(单字节单机器周期,单双,双单,双双, 三双,单四) ▪ 如果采用12MHz的晶振,振荡周期为(1/12M)s,时钟 周期为(2/12M)s,机器周期为(12/12M)s=1us
个机器周期个机器周期S2S1S3S4S5S6S1S2S3S4S5S6P1P2PIP2P1P2P1P2P1P1P2P1P2P1P2P2DSP1P2P1P2PlP2P1典型OSC000000000000000指令ALE的取读下一个操作码(丢弃)读操作码再读下一个操作码V→指、S1S3S2S4S5S6执行(a)!单字节单周期指令,如INCA时序读第二字节二读操作码读下一个操作码→LFS1S4S2S3S5S6(b)双字节单周期指令,如ADDA#data再读下个操作码读下一个操作码(丢弃)读操作码→VS1S2S3S4S5S6S1S2S3S4S5S6(c)单字节双周期指令,如INCDPTR再读下一个操作码读下一个操作码(丢弃)不取指读操作码上不取指→无ALES4S1S2S3S5S6S2S3S6SIS4S5地址数据(d)单字节双周期指令如MOVX类指令访间外部存储器
典型 指令 的取 指、 执行 时序 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 读操作码 再读下一个操作码 读下一个操作码(丢弃) 读操作码 读第二字节 读下一个操作码 读下一个操作码(丢弃) 再读下一个操作码 读下一个操作码(丢弃) 读操作码 不取指 无 ALE 地址 数据 访问外部存储器 (a) 单字节单周期指令,如 INC A (b) 双字节单周期指令,如 ADD A,#data (c) 单字节双周期指令,如 INC DPTR (d)单字节双周期指令 S1 S2 S3 S4 S5 S6 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 S1 S2 S3 S4 S5 S6 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 读操作码 不取指 再读下一个操作码 如 MOVX 类指令 ALE OSC 一个机器周期 一个机器周期