viperchaos

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

2011年6月4日

摘要: 在尝试搭建ARM-LINUX交叉编译环境,有时候gcc版本太高,编译环境可能会搭建失败。本人在ubuntu环境下安装了gcc-4.4,gcc-4.1.现在从gcc-4.1切换到gcc-4.4.1.sudo rm /usr/bin/gcc2.sudo ln -s /usr/bin/gcc-4.4 /usr/bin/gcc其实这就是一个符号文件的改变问题.在/usr/bin/ 目录下分别有gcc-4.4和gcc-4.1可以通过命令gcc -v来查看gcc的版本,检查是否设置成功.参考资料:1.http://hi.baidu.com/gcc_gun/blog/item/1603a7fdb35515. 阅读全文
posted @ 2011-06-04 23:20 viperchaos 阅读(1628) 评论(0) 推荐(0)

2011年5月29日

摘要: 用ATMEGA8芯片按参考资料里面的网址做了一个125KHZ低频的阅读器,由于基础不好,花了一天多时间阅读代码,自己也是第一次接触ATMEGA8芯片,寄存器设置和工作方式也不是很熟悉。代码某些地方还不是很明白,大部分都搞懂了,非常感谢原作者!//包含所需头文件 #include <avr/io.h> #include <avr/interrupt.h> /*------宏定义------*/ #define BIT(x) (1<<(x)) void put_c(unsigned char dat); void put_s(unsigned char *dat 阅读全文
posted @ 2011-05-29 19:11 viperchaos 阅读(1134) 评论(0) 推荐(0)

2011年5月7日

摘要: Attack1.cs文件中调用Reader1.cs文件中的OpenPort函数。 Reader1 UHFReader1 = new Reader1(); int CntSin = 0; int CntMul= 0; int Port = 1; byte Comadr = 0xff; byte Band = 0x01; int FrmHandle = 0; bool OpenPortFlag = UHFReader1.OpenPort(Port, Comadr, Band, FrmHandle); //打开端口 if (true == OpenPortFlag){ Console.WriteLi 阅读全文
posted @ 2011-05-07 22:14 viperchaos 阅读(603) 评论(0) 推荐(0)

2011年4月30日

摘要: 当static用于代码内部的变量声明时,static用于修改存储变量的存储类型,从自动变量修改为静态变量,当变量的链接属性和作用域不受影响。用这种方式声明的变量在程序执行之前创建,并在程序的执行过程中一直存在,而不是每次在代码块开始执行时创建,在代码块执行完毕后销毁。参考资料:1.《C和指针》p45 阅读全文
posted @ 2011-04-30 16:41 viperchaos 阅读(199) 评论(0) 推荐(0)

摘要: 想让ATMGEGA8L使用11.0592MHZ的石英晶振,但是ATMEGA8英文手册外部晶振熔丝设定的说明外部晶振最大只能到8MHZ 上网查了下,有人说ATMEGA8的外部晶振最大可以到16MHZ,而ATMEGA8L只能到8MHZ,出处:http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=209502&bbs_page_no=1&search_mode=4&search_text=malking&bbs_id=9999其实ATMEGA8L还是可以用11.0592MHZ的晶振的,CKOPT CKSEL3..1都设置为1就 阅读全文
posted @ 2011-04-30 14:12 viperchaos 阅读(1248) 评论(0) 推荐(0)

2011年3月13日

摘要: 用51单片机做串口方正i碰到的问题:用串口调试工具以十六进制发送FF~88到单片机,P1口LED灯显示正常,但是发送00~77到单片机,P1口都是全亮,没有任何变化。 调试成功后后的代码如下: #include <reg52.h>unsigned char temp;void main(){TMOD = 0x20;TH1 = 0xfd;TL1 = 0xfd;TR1 = 1;SM0 = 0;SM1 ... 阅读全文
posted @ 2011-03-13 15:32 viperchaos 阅读(609) 评论(0) 推荐(0)

2011年2月27日

摘要: 中断响应条件: 1.中断源有中断请求; 2.此中断源的中断允许位为1; 3.CPU开中断(即EA=1)。以上三条同时满足时,CPU才有可能响应中断。定时/计数器初始化程序应完成如下工作: 1.中断方式时,则对IE赋值,开放中断。 2.对TMOD赋值,以确定T0和T1的工作方式。 3.计算初值,并将其写入TH0、TL0或TH1、TL1。 4.使TR0或TR1置位,启动定时/计数器定时或计数。 阅读全文
posted @ 2011-02-27 11:19 viperchaos 阅读(983) 评论(0) 推荐(0)

2011年1月15日

摘要: 在LINUX下面编辑*.c文件,你虽然已经使用#includemath.h,但在使用sqrt(), pow()函数还是会碰到问题。用GCC编译不带-lm选项时会得到这样的错误提示:如果你使用math.h里面的函数直接自己填充数值的话,是没有问题的。如pow(2, 3), 因为编译器编译的时候直接这个值计算出来了。但是函数里面带有变量的话,如:pow(2, i).编译的时候无法直接算出这个值的,编译的时候需要连接math.h。因此GCC编译带 -lm里面选项就会通过。参考资料:1.http://stackoverflow.com/questions/4174080/problem-using 阅读全文
posted @ 2011-01-15 20:47 viperchaos 阅读(1024) 评论(0) 推荐(0)

2011年1月12日

摘要: 题目:squeeze(s1, s2), 将字符串S1中任何与字符串S2中字符匹配的字符都删除。虽然最后写出来了,用splint分析一下问题还不少,竟然有内存泄露问题,好歹函数的功能基本都实现了。写的程序问题有两个:一个是内存泄露,另一个是编译器警告squeeze函数返回地址与S1相同。要改进的地方很多,感觉今天最大的收获就是有点会用GDB调试程序了。题意理解错了,我理解为必须全部匹配才把S1中的字符串剔除掉,看英文的翻译意思很清楚。。。。 阅读全文
posted @ 2011-01-12 01:27 viperchaos 阅读(425) 评论(0) 推荐(0)

2011年1月9日

摘要: 调用hoti(char s[])函数,自己试了两种调用方式:1.编译通过2.编译不通过分析原因如下:  首先对于字符串常量,比如这里的"110",编译器编译后会将它们放入只读节中:.section .rdata,"dr"LC1:.ascii "110\0".text  这样在运行该程序时,会将只读节映射到只读的段中。如果运行时更改只读段中的数据,则会出现“一般保护性异常”,通常程序会abort。 再说char *ptest = "110"; 要先搞清楚“=”两边的类型,左边是一个char*类型的指针,右边是一个字符串常量,它所代表的类型是char const*, char const*是不能直 阅读全文
posted @ 2011-01-09 21:27 viperchaos 阅读(796) 评论(0) 推荐(0)