关于8位单片机上资源有限一些要注意的点

Posted rodzheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于8位单片机上资源有限一些要注意的点相关的知识,希望对你有一定的参考价值。

8位mcu,51内核:

新塘的N76E003AT20,比stm8同款的多一点端口,具体多什么可以百度一下,这里不赘述了.

注意点1:局部变量的合理分配,一般在8位单片机上跑的程序逻辑都比较简单,单循环+中断. 

    根据N76的特性,把一些大的数组局部变量分配在xram里.参考EEPROM的demo.

注意点2:8位机运算能力有限,有限取余整除运算可以直接用

1 TH0=(65536-50000)/256;
2 TL0=(65536-50000)%256;
3 //等效于
4 TH0=(65536-50000)>>8;
5 TL0=(65536-50000)&0x00ff;

这个不知道编译器会不会去主动优化,自己写比较放心吧.

注意点3: 8位和32位里面一些数据长短的问题:

 1 SerialPrintf("char : %d 

", sizeof(char));
 2 SerialPrintf("short : %d 

", sizeof(short));
 3 SerialPrintf("int : %d 

", sizeof(int));
 4 SerialPrintf("long : %d 

", sizeof(long));
 5 SerialPrintf("long long : %d 

", sizeof(long long));
 6 // 8位
 7 char : 1
 8 short : 2
 9 int : 2
10 long : 4
11 long long : 4
12 //32位
13 char : 1
14 short : 2
15 int : 4
16 long : 4
17 long long : 8

所以,请用typedef signed   char   int8;  来定义

注意点4: 善用Timer0的中断1,这个是在中断优先级里仅次于INT0,而RI/TI的中断是4.

 

以上是关于关于8位单片机上资源有限一些要注意的点的主要内容,如果未能解决你的问题,请参考以下文章

8位单片机轻松跑RTOS操作系统

关于51单片机的外部中断使用方法

单片机1937记录

求助:很急!关于STC 8位单片机上电后,无法进入串口接收中断的问题

在51单片机上跑RTOS有没有意义?

Xcode 8 Autocomplete Broken - 仅显示有限的用户代码片段 - 知道为啥吗?