- 打卡等级:偶尔看看III
- 打卡总天数:54
- 最近打卡:2025-05-01 09:07:55
管理员
- 积分
- 15611
|
何老师 全球第一本 《STC 32位8051单片机原理及应用》 本科教材,即将在 高等教育出版社出版
精彩部分:
本节以STC公司STC15/STC8系列增强型8051单片机和STC32GG单片机为例,评价STC15/STC8系列增强型8051单片机和STC32GG系列单片机的性能。
对于下面的一段C语言代码,如代码清单1-2所示。
代码清单1-2 C语言程序设计
void main()
{
volatile long int a=10000000,b=30000000;
volatile long int c;
c=a+b;
}
当运行在STC15/STC8系列增强型8051单片机上时,该段代码生成的反汇编指令和每条指令的周期数
(详见STC15/STC8系列增强型8051单片机数据手册的指令部分)如表1.4所示。
在第一章讨论中,介绍的内容,就有一段程序 在8位STC15/STC8上以及在32位STC32的程序代码长度和执行周期的比较
表1.4 反汇编指令和指令周期数(运行在STC15/STC8系列单片机)
汇编助记符指令 机器指令(十六进制表示) 指令长度(以字节计) 时钟周期数
MOV 0x0B, #P0(0x80) 750B80 3 3
MOV 0x0A, #0x96 750A96 3 3
MOV 0x09, #SCON0(0x98) 750998 3 3
MOV 0x08, #0x00 750800 3 3
MOV 0x0F, #P0(0x80) 750F80 3 3
MOV 0x0E, #0xC3 750EC3 3 3
MOV 0x0D, #0xC9 750DC9 3 3
MOV 0x0C, #0x01 750C01 3 3
MOV A, 0x0B E5B0 2 2
ADD A, 0x0F 250F 2 2
MOV 0x13, A F513 2 2
MOV A, 0x0A E50A 2 2
ADDC A, 0x0E 350E 2 2
MOV 0x12, A F512 2 2
MOV A, 0x09 E509 2 2
ADDC A, 0x0D 350D 2 2
MOV 0x11, A F511 2 2
MOV A, 0x08 E508 2 2
ADDC A, 0x0C 350C 2 2
MOV 0x10, A F510 2 2
表1.5 反汇编指令和指令周期数(运行在STC32G系列单片机)
汇编助记符指令 机器指令(十六进制表示) 指令长度(以字节计) 时钟周期数
MOV WR6, #0x9680 7E349680 4 1
MOV WR4, #0x0098 7E240098 4 1
MOV a(0x0008), DR4 7A1F0008 4 2
MOV WR6, #0xC380 7E34C380 4 1
MOV WR4, #0x01C9 7E2401C9 4 1
MOV b(0x000C), DR4 7A1F000C 4 2
MOV DR0, b(0x000C) 7E0F000C 4 2
MOV DR4, a(0x0008) 7E1F0008 4 2
ADD DR4, DR0 2F10 2 1
MOV c(0x0010), DR4 7A1F0010 4 2
从表1.5可知,在STC32G系列单片机上实现代码清单1-2给出的代码,需要10条指令,所有指令的字节总数为38个字节,所需要的时钟周期数为15个。
显然,当采用STC32G系列单片机后,所需要的时钟周期从使用STC15/STC8系列增强型8051单片机需要48个减少为15个,程序运行时间缩短为原来的1/3,即所需要的时钟周期数是原来的33%,并且指令条数从使用STC15/STC8系列增强型8051单片机需要20条减少为10条,指令数量缩短为原来的1/2(50%)。指令总长度从使用STC15/STC8系列增强型8051单片机需要48个字节缩短为38个字节,即代码的存储容量减少为原来的80%。
从指令个数和运行时间来看,采用STC32系列MCU的性能要明显高于采用MCS-51 ISA的STC15/STC8系列MCU的性能。
|
|