【1 关于标志位的定义……】 答:51单片机有个特别灵活的地方,就是有256个可以按位进行操作的指令。其中系统用了128个。所以用户还可使用128个。 STM8和32相对比51功能强一点,内存也大多了,其设计理念就没有考虑用位操作的指令,所以无法直接按位操作。 如果你非要按位操作,只能变通一下。用与、或等逻辑运算,将字节逻辑到位,进行操行。如最高位是否为1:与8000H。置1:或8000H。 【2 关于中断函......】 答:单片机上有若干个中断源,每个中断必然有一个入口(CPU执行的地址),有时几种中断源会共用一个入口。 51的中断入口地址是指定死的。如0003H,0013H。也即对应的中断响应后进入0003H地址执行程序。 STM8中断入口稍活一些,它是从指定的地址中,取出你自由定义的中断入口地址,也就有了中断向量一说。方式复杂了一步,但更活了,入口可以在任意位置了。 如果你用汇编写程序,必须注意这些。 如果你用C写程序,编译平台会帮助你处理这些问题,你只要告诉平台,一个地址变量就可以了。 【3 关于中断的标志位....] 答:当中断源动作时,是否发生中断分两类。 一类是强制性的,必须响应,称为非屏蔽中断。 一类是由你决定的,也即给你一个开关,由你来决定是否允许它被响应。 各中断源为了表达自己发生了中断动作,就必须给出一个标记,这就是中断标记。 特别是,有的中断源共用一个入口,就更需要用这个标记区分是谁发生了中断。 中断标记只负责申请中断,至于是不是被响应执行,那是CPU的事。如果这个标记不被清除,它就一直申请。所以执行完中断程序后,要记得清除它,非则:又重新来一次又一次。 【4 关于ST-LINK/V2.我......】 答:STM8和32是完全不同的指定系统。如果你是编译平台,同样一个IF语句,你如果编译成CPU代码呢?写成STM8的呢?还是32的呢? 必须给出一个区分的方式。 【5 在程序编译没有错。......】 答:【编译没有错】只是平台对你写的程序,评价为:没有违反它的规定!! 不表示你没有其它错误行为! |