51单片机中断 C语言?请教!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51单片机中断 C语言?请教!相关的知识,希望对你有一定的参考价值。
时间长了没接触C51 我想问下C51里的中断是怎么写的好像什么interrupt using 什么的 能介绍下一一对应关系吗?特别是那个using后面的0,1,2,什么的 是怎么确定的?有没有什么规则?
"n是中断号,范围是0-31"而51一般就五六个中断 为什么会有0-31这么多的中断号。
interrupt是中断函数类型关键字,其后面的n是中断号,范围是0-31
51单片机内可以在片内RAM中使用4个不同的工作寄存器组,每个寄存器组中包含8个工作寄存器(R0-R7)。而using就是用来选择不同的工作寄存器组的,其后面的n是一个0-3的正整数,分别选中4个不同的工作寄存器组。using是一个选项,如果不用则由编译器自动选择一个寄存器组作为绝对寄存器组访问。
注意:关键字using和interrupt的后面都不允许跟带运算符的表达式,只能是一个在一定范围内的常数!
这个我就不太清楚了,可能是为了扩展使用,一般51单片机的接口多 参考技术A TS
请教一个 C语言 字符串数组之间比较的算法,谢谢
我把10个ip地址,赋值给了10个字符串数组,现在想比较它们之间的异同,相同的删除,重重复的优先级+1,想请您帮助的是,者10个字符串数组应该用什么办法进行比较呢,如果一一比较的话得40多次,太麻烦,请问有好的算法吗,谢谢
这种时候当然是使用标准容器拉std::map可以满足你的需要
10个ip 地址 复制给10个std::string. 然后构造一个 std::map<std::string, int> 再逐个使用insert方法插入, 如果插入成功(通过检查insert的返回值, 具体请搜索msdn,这里篇幅有限。)
如果插入成功, 继续; 不成功,就表示有重复,将返回的那个已经存在的ip对应的优先级++, 再继续。
map的特点就是不重复,你省去了自己去写比较,去优化的繁琐,而且一般stl实现的效率都是很高的绝对不是你这种40多次的O(N)的,应该至少都是o(ln N) 参考技术A 定义一个二维数组char str[10][20];
然后把str[0]~str[9]看成10个字符串数组名就可以用循环了,再用一个数组int a[10]来记录优先级(a[]不要忘了初始化)
如:
n=9//用来保存还剩几个字符串
for(i=0;i<=n;i++)
for(j=i+1;j<=n;j++)//为什么这么循环就不用说了吧
if(strcmp(str[i],str[j]==0))
for(k=j+1;k<=n;k++)
strcpy(str[k-1],str[k]);
a[k-1]=a[k];
n--;
a[i]++;
//整个if就是从与前面相同的那个开始整体往前移一位达到删除的效果当然a[]也要移来保持一一对应,然后a[i]自加一表示优第i个的优先级加一
输出时str[0][20]~str[n][20]就是剩下的ip地址a[0]~a[n]就是ip地址所对应的优先级
代码没编译过,可能有些小问题,主要是说说方法
以上是关于51单片机中断 C语言?请教!的主要内容,如果未能解决你的问题,请参考以下文章
请教C51单片机,C语言编程,怎样把一个四位数存入(读取)外部数据存储器?请举例说明。
51单片机c语言中断函数不能进行参数传递,是啥意思,谁能解释一下