关于作者

姓名:边缘

性别:男

出生日期:1979-04-02

地区:深圳

联系电话:

QQ:25498907婚否:未婚
用户名:szrocky
笔名:rocky
地区: 深圳
行业:其他

日历  

快速登录

+ 用户名:
+ 密 码:

在线留言



常用网址

访问统计:
文章个数:25
评论个数:28
留言条数:0




Powered by BlogDrivr 2.1

边缘

 

我们都是很柔软的动物, 活在壳里,发誓抵抗, 最后不过丢盔卸甲慢慢地顺从; 我们都是很微小的动物,不足道, 如果想要快乐一些, 就要忘掉世界的辽阔; 我们都是很可怜的动物, 来到这个世界,受点委屈,受点刺激, 这么苟且地活着; 我们都是很那个的动物, 活在自己身边,这么看着,这么干着, 这么凑合,这么快乐地活着。 -----《活着》

文章

指针实例(C51)

指针实例(C51) 


#pragma src

#i nclude <reg51.H>


f(){}
f1(){}
f2(){}

main()
{
    {
        int x;
        int *px;

        //下面这些表示虽然很烦,但是生成的代码却及其简洁:

        //将 xdata 型指针 0x4000 赋给 px
        px=(int xdata *)0x4000;

        //表示从 xdata 0x4000处取一个 char 给x
        x=*((char xdata *)0x4000);

        // 表示从 code 0x4000处取一个 word 作为 xdata 型的指针 给
px
        px=*((int xdata * xdata *)0x4000);

        //表示从 code 0x4000处取一个 word 作为 xdata 型的指针,
        //再把这个指针指向的char数据赋给x
        x=**((char xdata * code *)0x4000);

        //表示把函数f()入口地址当作xdata型指针,再把指向的xdata
        //中的int型数据作为code型指针,把指向的code字节
        //赋给x(晕,这样有意义吗?)
        x=**(int code * xdata *)f;

        //把f()入口地址处的ROM中两个code型字节,
        //赋给堆栈指针SP指向的字节(想干什么?编操作系统?)
        *(unsigned int idata *)SP=*(unsigned int code *)&f;

        //表示把f()入口地址处的ROM中两个code型字节,
        //作为一个xdata指针寻址,
        //把指向的数据作为pdata指针寻址,
        //再把把指向的数据作为idata指针寻址,
        //把该地址处的一个字节赋给x (我靠,累死了)
        x= ****(unsigned int data * idata * pdata * xdata * code
*)&f;
       
        //总之,一个括号里面外面的"*"一样多就表示指向的是数据。
    }

    {
        //数组函数
        code void (*ArrFn[])(void) =
        {    &f1,
            &f2,
        };
        //可以像引用数组一样调用函数啦:
        (*ArrFn[0])();
        (*ArrFn[1])();
    }

    {
        //这样将使函数调用0000H处:
        void (*reset) (void);
        reset=0x0;
        (*reset)();
        reset();

        //或者直接这样,仅仅生成一条指令LCALL 1234H
        ((void (code *)(void))0x1234)();
    }

    {
        //这样可以调用RETI指令:
        #define  INT_NUM  30    //空闲中断号
        ((void (code *)(void))(INT_NUM*8+3))();
        //当然需要在外面声明   int_rpt()interrupt INT_NUM {}
    }
    {
        //这样调用RETI指令太变态:
        code unsigned char ret_i=0x32;
        ((void (code *)(void))(&ret_i))();
    }
}
int_rpt()interrupt INT_NUM {}

- 作者: rocky 2005年12月19日, 星期一 09:41  回复(1) |  引用(3) 加入博采

磁卡国际标准

1.  ISO 7810:1985 识别卡 物理特性规定了卡的物理特性,包括卡的材料、构造、尺寸。

    卡的尺寸为:

宽度 85.72mm----85.47mm
 
高度  54.03mm----53.92mm
 
厚度  0.76±0.08mm
&bsp;
卡片四角圆角半径  3.18mm
 
一般讲卡的尺寸为  85.5 X 54 X 0.76
 

2.ISO7811-1:1985识别卡记录技术第1部分:凸印规定了卡上凸印字符的要求(字符集、字体、字符间距和字符高度)。
3.ISO7811―2:1985识别卡记录技术第2部分:磁条规定了卡上磁条的特性、编码技术和编码字符集。
4.ISO7811―3:1985识别卡记录技术第3部分:ID-1型卡上凸印字符的位置
5.ISO7811―4:1985识别卡记录技术第4部分:只读磁道的第1、2磁道位置。
6.ISO7811―5:1985识别卡记录技术第5部分:读写磁道的第3磁道位置。

- 作者: rocky 2005年12月19日, 星期一 09:39  回复(0) |  引用(3) 加入博采

93c46读写程序
#include
sbit CS=P2^7;
sbit SK=P2^6;
sbit DI=P2^5;
sbit DO=P2^4;

/*
extern unsigned char ReadChar(unsigned char address);
extern void WriteChar(unsigned char address,unsigned char InData);
extern void ReadString(unsigned char data *RamAddress,unsigned char RomAddress,
unsigned char Number);
extern void WriteString(unsigned char data *RamAddress,unsigned char RomAddress,
unsigned char Number);
*/

// Write enable must precede all programming modes.
void Ewen(void) {
unsigned char temp,InData;
CS=0;
SK=0;
CS=1;
InData=0x98; // 10011XXXX
for(temp=9;temp!=0;temp--) { // 9
DI=InData&0x80;
SK=1; SK=0;
InData<<=1;
}
CS=0;
}

// Disables all programming instructions.
void Ewds(void) {
unsigned char temp,InData;
CS=0;
SK=0;
CS=1;
InData=0x80; // 10000XXXX
for(temp=9;temp!=0;temp--) { // 9
DI=InData&0x80;
SK=1; SK=0;
InData<<=1;
}
CS=0;
}

// Reads data stored in memory, at specified address.
unsigned int Read(unsigned char address) {
unsigned char temp;
unsigned int result;
Ewen();
SK=0; DI=1; // 110 A5-A0
CS=0; CS=1;
SK=1; SK=0; // 1
address=address&0x3f|0x80;
for(temp=8;temp!=0;temp--) { // 8
DI=address&0x80;
SK=1; SK=0;
address<<=1;
}
DO=1;
for(temp=16;temp!=0;temp--) { // 16
SK=1;
result=(result<<1)|DO;
SK=0;
}
CS=0;
Ewds();
return(result);
}

// Writes memory location An - A0.
void Write(unsigned char address,unsigned int InData) {
unsigned char temp;
Ewen();
SK=0; DI=1; // 101 A5-A0
CS=0; CS=1;
SK=1; SK=0; // 1
address=address&0x3f|0x40;
for(temp=8;temp!=0;temp--) { // 8
DI=address&0x80;
SK=1; SK=0;
address<<=1;
}
for(temp=16;temp!=0;temp--) { // 16
DI=InData&0x8000;
SK=1; SK=0;
InData<<=1;
}
CS=0; DO=1;
CS=1; SK=1;
while(DO==0) { // busy test
SK=0; SK=1;
}
SK=0; CS=0;
Ewds();
}

/*
// Erase memory location An - A0.
void Erase(unsigned char address) {
unsigned char temp;
Ewen();
SK=0; DI=1; // 111 A5-A0
CS=0; CS=1;
SK=1; SK=0; // 1
address|=0xc0;
for(temp=8;temp!=0;temp--) { // 8
DI=address&0x80;
SK=1; SK=0;
address<<=1;
}
CS=0; DO=1;
CS=1; SK=1;
while(DO==0) {
SK=0; SK=1;
}
SK=0; CS=0;
Ewds();
}

// Erases all memory locations. Valid only at VCC = 4.5V to 5.5V.
void Eral(void) {
unsigned char temp,InData;
Ewen();
CS=0;
SK=0;
CS=1;
InData=0x90; // 10010XXXX
for(temp=9;temp!=0;temp--) { // 9
DI=InData&0x80;
SK=1; SK=0;
InData<<=1;
}
CS=0; DO=1;
CS=1; SK=1;
while(DO==0) {
SK=0; SK=1;
}
SK=0; CS=0;
Ewds();
}

// Writes all memory locations. Valid only at VCC = 4.5V to 5.5V.
void Wral(unsigned int InData) {
unsigned char temp,address;
Ewen();
CS=0;
SK=0;
CS=1;
address=0x88; // 10001XXXX
for(temp=9;temp!=0;temp--) { // 9
DI=address&0x80;
SK=1; SK=0;
address<<=1;
}
for(temp=16;temp!=0;temp--) { // 16
DI=InData&0x8000;
SK=1; SK=0;
InData<<=1;
}
CS=0; DO=1;
CS=1; SK=1;
while(DO==0) {
SK=0; SK=1;
}
SK=0; CS=0;
Ewds();
}

*/

unsigned char ReadChar(unsigned char address) {
unsigned char temp=address>>1;
if(address&0x01) return((unsigned char)(Read(temp)>>8));
else return((unsigned char)(Read(temp)));
}

void WriteChar(unsigned char address,unsigned char InData) {
unsigned char temp=address>>1;
if(address&0x01) Write(temp,(unsigned int)(Read(temp)&0x00ff|(InData<<8)));
else Write(temp,(unsigned int)(Read(temp)&0xff00|InData));
}

void ReadString(unsigned char data *RamAddress,unsigned char RomAddress,
unsigned char Number) {
while(Number!=0) {
*RamAddress=ReadChar(RomAddress);
RamAddress++;
RomAddress++;
Number--;
}
}

void WriteString(unsigned char data *RamAddress,unsigned char RomAddress,
unsigned char Number) {
unsigned int temp;
if(Number==0) return;
if(RomAddress&0x01) {
WriteChar(RomAddress,*RamAddress);
RamAddress++;
RomAddress++;
Number--;
}
if(Number==0) return;
while(Number>>1) {
temp=*RamAddress;
RamAddress++;
temp=temp|(*RamAddress)<<8;
RamAddress++;
Write(RomAddress>>1,temp);
RomAddress++;
RomAddress++;
Number--;
Number--;
}
if(Number) WriteChar(RomAddress,*RamAddress);
}

- 作者: rocky 2005年12月7日, 星期三 11:19  回复(0) |  引用(3) 加入博采

专业术语
摘要:专业术语 查看全文

- 作者: rocky 2005年11月4日, 星期五 18:51  回复(0) |  引用(3) 加入博采

一位浙大教授令人发冷汗的演讲摘录
摘要:一位浙大教授令人发冷汗的演讲摘录 查看全文

- 作者: szrocky 2005年11月4日, 星期五 14:44  回复(8) |  引用(3) 加入博采

遥控电路基础知识
摘要:遥控电路基础知识 查看全文

- 作者: szrocky 2005年11月2日, 星期三 17:02  回复(0) |  引用(3) 加入博采

电子视频教程
摘要:视频教程 查看全文

- 作者: szrocky 2005年11月2日, 星期三 15:57  回复(1) |  引用(3) 加入博采

当今职场上广为流传的十大精辟语录

当今职场上广为流传的十大精辟语录- -

Tag职场    语录                                          

当今职场上广为流传的十大精辟语录 职场生涯

大学毕业生要找的只是一个工作,而不是职业,更不是事业。

———在北京召开的首届中国大学生就业高峰论坛上,专家们均认为,高校毕业生就业时应当放低自身期望值,做好从蓝领、灰领干起的心理准备。

大学学习期间,要尽量争取脑袋满,而不要急于口袋满。

———中科院院士王选谈对当前部分学生休学开公司的看法。

不要读博士,因为博士在美国找工作的难度,相当于女博士在中国找老公的难度。也千万不要羡慕有3个博士头衔的人,因为只有找不到工作的时候才会一个接一个地读博士。

———一个没有博士头衔的留学生如是说。

千万不要以为美国没有天才,美国的天才只不过是喜欢退学而已。也千万不要以为中国人都是天才,中国的有些天才除了考分高,基本上什么都不会。

———一个留学生在看到中国人在拼命上哈佛时说。

他们以为MBA就像是一个美容院,读完MBA,出来就会容光焕发,脱胎换骨。

———令专家担忧的是:MBA在中国已被简化为高薪加升职。

中国人太多了,13亿人,你藏在这么多人里头,怎样才能引起别人注意?一个老板要请人,两个应聘者能力差不多,那他一定会选那个长得比较好看的。

———一位整容师如此解为何中国流行整容热。

让我讲创业的故事,就像祥林嫂讲阿毛的故事一样,讲多了也没什么意义。

———《福布斯》和《欧洲货币》双料中国内地首富丁磊在母校中国电子科大说的话,以此表示对富豪话题的厌倦。

八分人才,九分使用,十分待遇。

———力帆集团董事长尹明善谈民营企业的留人之道。

总是在裁人,简称总裁;老是板着脸,故称老板;经常不理人那叫经理。

———商业职位新解。

铁饭碗的真正含义不是在一个地方吃一辈子饭,而是一辈子到哪儿都有饭吃

———一个在网络上流传的帖子

- 作者: szrocky 2005年11月1日, 星期二 14:14  回复(1) |  引用(3) 加入博采

中国企业如何以最简单有效的方式获得CE标志?
摘要:中国企业如何以最简单有效的方式获得CE标志? 查看全文

- 作者: rocky 2005年10月26日, 星期三 10:50  回复(0) |  引用(3) 加入博采

低电压指令(CE-LVD)需要的资料:
摘要:低电压指令(CE-LVD)需要的资料 查看全文

- 作者: szrocky 2005年10月26日, 星期三 10:19  回复(0) |  引用(3) 加入博采

每天问自己十个问题
摘要:每天问自己十个问题 查看全文

- 作者: rocky 2005年10月25日, 星期二 17:12  回复(1) |  引用(3) 加入博采

两分钟让你明白什么是ERP!
摘要:ERP 查看全文

- 作者: szrocky 2005年10月25日, 星期二 16:22  回复(12) |  引用(3) 加入博采

蓝牙技术及其系统原理
摘要:蓝牙技术及其系统原理 查看全文

- 作者: szrocky 2005年10月25日, 星期二 15:40  回复(0) |  引用(3) 加入博采

如何提高抗干扰能力和电磁兼容性
摘要:如何提高抗干扰能力和电磁兼容性 查看全文

- 作者: rocky 2005年10月25日, 星期二 15:04  回复(0) |  引用(3) 加入博采

PWM控制电路的基本构成及工作原理
摘要:介绍了PWM控制电路的基本构成及工作原理,给出了美国Silicon General公司生产的高性能集成PWM控制器SG3524的引脚排列和功能说明,同时给出了其在不间断电源中的应用电路。 查看全文

- 作者: rocky 2005年10月25日, 星期二 15:01  回复(0) |  引用(3) 加入博采