1.IC Specification 订定规格: 订定IC的规格,工作电压、电流,采用的制程等,并于架构设计时就必须考虑其未来测试问题。
2.IC Design IC设计: 依据所订的的规格来设计,于逻辑设计与线路计设时,须考虑可测试性设计及实际产生其测试图样,供IC制作完成后之测试用。
3.IC Layout IC布局: 将设计完成的电路,依据制造IC所需光罩的设计规则,完成实体布局。
4.Wafer Process 晶圆制造: 光罩完成后,进入晶圆厂制造。
5.Circuit Probe电路点测: 利用探针点测芯片上的电路。
6.Package 封装: 依需求决定IC的包装,PIN脚数、封装材枓皆有不同。
7.Final Test 成品测试: 进行功能测试并区分等级。
8.Brun-In 预烧测试: 利用高温,加速可靠度不佳的IC,提早淘汰。
9.Sampling Test 取样测试: 品管人员,取样抽测,如有不良品由品保工程分析,并追踪制程上缺失。
10.Shipment 出货: 正式上市贩卖。
要做一个程序编辑你就必须会C语言
首先:C语言入门相对比较简单,但如果想成为一个优秀的C程序员,需要很艰苦的训练,多读代码,多练习,多上机 *** 作,多思考,学习是一件辛苦的事情,要放弃很多东西,要坚持下来才可以,可以说C语言是基础,将来想学其他的C++,JAVA等,如果有C的基础,还是比较好入门的.
C语言的用处比较广泛,可以说任何精通计算机的人都掌握C语言了,我是本科计算机专业的,C被作为许多课程的先行课,没有了C语言基础,就不能学习数据结构, *** 作系统,编译原理,计算机网络等核心课程,所以说,想学习计算机的话无论想在哪个方向发展(软件,硬件,网络,应用,开发,设计等方向)都必须掌握C语言.
关于C语言的教材:我向你推荐几本:
最经典的:《C程序设计语言》第2版,机械工业出版社
这个是C语言的设计者和UNIX系统的设计者合作编写的最经典的C语言教材,原书名叫《The C Programming Language》当然,这本书不太适合0起点的人,看这本书之前最好把《C程序设计》(谭浩强,清华大学)看了,老谭的书销量突破700万册了,虽然比较旧了,也不太符合新标准(现在出第3版了,也还是)但是,入门还是不错的选择。
另外还有必看的是《C Primer Plus》这个是一个美国人写的,人民邮电出版社出了中文版了,第5版,比较厚,砖头书,60元。但是非常适合初学的人,非常详细。
还有《从问题到程序——程序设计与C语言引论》机械工业出版社,这本书也很不错。
看完这些,就可以看算法的书了,比如数据结构什么的,这方面的书很多。如果想在程序界发展,那么有部重量级的著作不得不看《The Art of computer programming》一共三卷,有翻译版《计算机程序设计的艺术》这三卷书非常深,比较难,盖茨说,谁如果把这上面的习题都做对了,直接可以到微软上班了。
另外学习C语言要养成良好的程序风格,这点一定要注意练习!
总结:书一定要多看,教材看个4-5遍,关键是里面的程序,要理解了,然后多上机练习,最好能多看几本C语言的书,我上面列出的,然后就是多做题了,做题能和上机联系起来就更完美了,坚持下来就没问题了
四 运行烧录器软件,这时程序会自动监测通信端口和芯片的类型,接着从编程软件中,调入提前准备好的被烧写文件(hex文件)。五 然后开始烧写,接着编程器开始烧写程序到芯片中,烧写完成后,编程器会提示烧写完成,这时关闭编程器的电源,取下芯片即可。IC卡WINDOWS驱动程序手册一 、IC卡驱动程序是一32位 Windows应用程序调用的动态链接库,文件名为IC32.DLL。 二、 IC32.DLL提供的函数: 注意:以下函数名的大小写必须严格区分,否则无法调用<1>、通用函数:1.IC_Status()返回读写器状态2.IC_ErrMsg() 将错误码转换为错误信息3.IC_InitComm() 打开串口4.IC_ExitComm() 关闭串口5.IC_InitType () 设置要读卡的类型6.IC_Read () 读IC卡的内容7.IC_Write () 写内容到IC卡8.IC_Erase () 对IC卡擦除 *** 作(写FF)9.IC_Read_Float() 读IC卡存储的浮点数10.IC_Write_Float() 写浮点数到IC卡<2>、西门子4432/4442卡专用函数:1.IC_ReadProtection () 读S4432/S4442卡的保护位2.IC_WriteProtection () 写S4432/S4442卡的保护位3.IC_ReadCount_SLE4442 () 读S4442卡的错误计数器4.IC_CheckPass_SLE4442 () 效验S4442卡的密码5.IC_ChangePass_SLE4442 () 改变S4442卡的密码<3>、西门子4418/4428卡专用函数:1.IC_ReadWithProtection () 带保护位读S4418/S4428卡2.IC_WriteWithProtection () 带保护位写S4418/S4428卡3.IC_ReadCount_SLE4428 () 读S4428卡的错误计数器4.IC_CheckPass_SLE4428 () 效验S4428卡的密码5.IC_ChangePass_SLE4428 () 改变S4428卡的密码<4>、ATMEL AT88SC101/102/103卡专用函数: 1. IC_CheckPass_102() 效验ATMEL101/102/103卡的系统密码 2. IC_ChangePass_102() 改变ATMEL101/102/103卡的密码 3. IC_ReadCount_102 () 读ATMEL101/102/103卡的错误计数器 4. IC_Erase_102()对ATMEL101/102/103卡的擦除 *** 作 5. IC_CheckAZPass_102() 效验ATMEL102卡的应用区密码 6. IC_ChangeAZPass_102()改变ATMEL102卡的应用区密码 7. IC_Fuse_102 ()烧断ATMEL102卡的熔丝<5>、西门子4406卡(电话卡)专用函数: 1. IC_RValue () 读S4406卡的值 2. IC_DEValue () 减S4406卡的值<6>、ATMEL AT88SC1604卡专用函数: 1. IC_CheckPass_1604()效验AT88SC1604卡的系统密码 2. IC_ChangePass_1604() 改变AT88SC1604卡的密码 3. IC_ReadCount_1604 () 读AT88SC1604卡的错误计数器 4. IC_Fuse_1604 ()烧断AT88SC1604卡的熔丝<7>、ATMEL AT24C系列卡(非加密卡)专用函数: 1. IC_Write24() 写AT24C卡(用法见IC_Write()函数)三 函数说明 <1>、通用函数:1.__int16 IC_Status(HANDLE ICDev)说明:返回当前状态*调用:HANDLE ICDev ---- InitComm返回的设备描述符返回:<0 错误,见错误码 =0 正确*举例:IC_Status(ICDev)2.__int16 IC_ErrMsg (__int16 ErrNo, unsigned char* ErrMsg)说明:获取错误信息内容调用:__int16 ErrNo ---- IC卡 *** 作函数返回的错误号 unsigned char * ErrMsg ---- 错误信息内容返回:<0 错误。其绝对值为错误号 >=0 ErrMsg的有效长度举例:IC_ErrMsg(0xee,errmsg) 将0XEE表示的错误信息存入errmsg指定的数据缓冲区。3.__int16 InitComm(__int16 Port)说明:打开通讯设备调用:__int16 Port ---- 通讯口号,整数0,1,2,3返回:<0 错误 >=0 通讯设备标识符举例:ICDev=InitComm(0) 打开串口一。4.__int16 ExitComm(HANDLE ICDev)说明:关闭通讯设备调用:HANDLE ICDev ---- InitComm返回的设备描述符返回:<0 错误 >=0 通讯设备正常关闭举例:ExitComm(ICDev) 关闭ICDev指定的串口。 5. __int16 IC_InitType (HANDLE ICDev,__int16 TypeNo)说明:设置卡类型调用:HANDLE ICDev ---- InitComm返回的设备描述符 __int16 TypeNo ---- 卡类型号返回:<0 错误。其绝对值为错误号 >=0 *** 作正确举例:IC_InitType(HANDLE ICDev,0x20) 设置卡类型为ATMEL102型 6. __int16 IC_Read (HANDLE ICDev,__int16 Offset,__int16 len, unsigned char * DataBuffer)说明:读取IC卡数据调用:HANDLE ICDev ---- InitComm返回的设备描述符 __int16 Offset ---- 读数据IC卡起始地址 __int16 Len---- 数据长度 unsigned char * Databuffer ---- 存放数据的缓冲区返回:<0 错误。其绝对值为错误号 >=0 有效数据长度。表示DataBuffer数据的有效字节数。举例:IC_Read(ICDev,16,64,DataBuffer) 读取16至79的数据到DataBuffer,正确返回64。 7__int16 IC_Write (HANDLE ICDev, __int16 Offset,__int16 length, unsigned char* DataBuffer)说明:写数据到IC卡调用:HANDLE ICDev ---- InitComm返回的设备描述符 __int16 Offset ---- 写IC卡起始地址 __int16 length ---- 数据的长度 unsigned char * Databuffer ---- 即将写入IC卡的数据 并存放返回数据返回:<0 错误。其绝对值为错误号 >=0 写入数据长度举例:IC_Write(ICDev,32,14,"IcCard Message") 将IcCard Message写入从32地址开始的数据区。8.__int16 IC_Erase(HANDLE ICDev,__int16 Offset,__int16 len)说明:擦除数据,即写十六进制的FF、十进制的255。调用:HANDLE ICDev ---- InitComm返回的设备描述符 __int16 Offset ---- 擦除的起始地址 __int16 len---- 擦除字节数返回:<0 错误。其绝对值为错误号 >=0 写入数据长度举例:IC_Erase(ICDev,24,32)擦除从绝对偏移址开始的32个字节。9.__int16 IC_Read_Float(HANDLE ICDev,__int16 Offset,float&fdata)说明:读一个浮点数,并返回到fdata中。调用: HANDLE ICDev ---- InitComm返回的设备描述符 __int16 Offset ---- 要读的起始地址 float&fdata----返回浮点数的地址返回:<0 错误。其绝对值为错误号 >=0 读入数据长度(应该为4)举例:IC_Read_Float(ICDev,24,&fdata)读从绝对偏移址24开始的一个浮点数。10.__int16 IC_Write_Float(HANDLE ICDev,__int16 Offset,float fdata)说明: 写一个浮点数到卡中。调用: HANDLE ICDev ---- InitComm返回的设备描述符 __int16 Offset ---- 要写的起始地址 float fdata ----要写的浮点数.返回:<0 错误。其绝对值为错误号 >=0 写入数据长度(应该为4)举例:IC_Write_Float(ICDev,24,&45.67)从绝对偏移址24开始写一个浮点数。<2>、西门子4432/4442卡专用函数: 1. __int16 IC_ReadProtection (HANDLE ICDev,__int16 Offset,__int16 len,unsigned char* ProtBuffer)说明:读取IC卡保护位调用:HANDLE ICDev ---- InitComm返回的设备描述符 __int16 Offset ---- 读保护位IC卡起始地址 __int16 Len---- 数据长度 unsigned char * Databuffer ---- 存放数据的缓冲区数据值为0表示保护位已置1表示未置保护 0xFF表示非保护位返回:<0 错误。其绝对值为错误号 >=0 有效数据长度。表示DataBuffer数据的有效字节数。举例:IC_ReadProtection(ICDev,0,32,ProtBuffer) 读取地址0~31的保护位数据, ProtBuffer每一字节为0表示对应的保护位已置。 2. __int16 IC_WriteProtection (HANDLE ICDev, __int16 Offset, __int16 len,unsigned char *ProtBuffer)说明:写IC卡保护位调用:HANDLE ICDev ---- InitComm返回的设备描述符 __int16 Offset ---- 写IC卡保护位起始地址 __int16 len ---- 保护位数 unsigned char *ProtBuffer ---- 要置保护位的数据内容,其内容必须与卡中现存 的内容相同,否则不能置写保护。. 返回:<0 错误。其绝对值为错误号 >=0 写入保护位字节数举例:ProtBuffer="MWIC"IC_WriteProtection(ICDev,16,4,ProtBuffer)将16,17,18,19位置保护 3.__int16 IC_ReadCount_SLE4442 (HANDLE ICDev)说明:读取西门子4442卡密码计数器值调用:HANDLE ICDev ---- InitComm返回的设备描述符返回:<0 错误。其绝对值为错误号 >=0 密码计数器计数值。此值表示试密码的机会。举例:IC_ReadCount_SLE4442(ICDev) 4. __int16 IC_CheckPass_SLE4442 (HANDLE ICDev, unsigned char* Password)说明:校验密码(用于SLE4442型) 是IC_CheckPass的宏调用:HANDLE ICDev ---- InitComm返回的设备描述符 unsigned char * Password---- 卡密码 3字节返回:<0 错误。其绝对值为错误号 >=0 校验密码正确举例:IC_CheckPass_SLE4442(ICDev,"111") 校验卡密码为111。 5.__int16 IC_ChangePass_SLE4442 (HANDLE ICDev, unsigned char* Password)说明:更改密码(用于SLE4442型)调用:HANDLE ICDev ---- InitComm返回的设备描述符 unsigned char * Password---- 新密码 3字节返回:<0 错误。其绝对值为错误号 >0 更改密码正确举例:IC_ChangePass_SLE4442(ICDev,"222") 将密码改为222。<3>、西门子4418/4428卡专用函数: 1. __int16 IC_ReadWithProtection (HANDLE ICDev,__int16 Offset,__int16 len,unsigned char* ProtBuffer)说明:带保护位读IC卡。调用:HANDLE ICDev ---- InitComm返回的设备描述符 __int16 Offset ---- 读保护位IC卡起始地址 __int16 Len---- 数据长度 unsigned char * ProtBuffer ---- 存放数据的缓冲区 此缓冲区包括两部分内容: 第一部分为卡中的数据,长度为Len所表示的长度;第二部分为相应的保护位内容, "0"表示保护位已置,"1"表示未置保护,第二部分从偏移址Len开始,也是Len个字节。返回:<0 错误。其绝对值为错误号 >=0 有效数据长度。表示ProtBuffer数据的有效字节数。举例:IC_ReadWithProtection(ICDev,0,32,ProtBuffer) 读取地址0~31的数据和其相应的保护位,ProtBuffer的0-31个字节为卡中数据, 从第32位开始ProtBuffer每一字节为"0"表示对应的保护位已置。注意:ProtBuffer所指缓冲区的长度必须为2*Len,否则将导致不可预料的错误。 2. __int16 IC_WriteWithProtection (HANDLE ICDev, __int16 Offset, __int16 len,unsigned char *ProtBuffer)说明:写IC卡的同时置保护位调用:HANDLE ICDev ---- InitComm返回的设备描述符 __int16 Offset ---- 写IC卡保护位起始地址 __int16 len ---- 保护位数 unsigned char *ProtBuffer ---- 要置保护位的数据内容 返回:<0 错误。其绝对值为错误号 >=0 写入保护位字节数举例:ProtBuffer="LKIC"IC_WriteWithProtection(ICDev,16,4,ProtBuffer) 对16,17,18,19位写入"LKIC"并置写保护 3. __int16 IC_ReadCount_SLE4428 (HANDLE ICDev)说明:读取西门子4428卡密码计数器值调用:HANDLE ICDev ---- InitComm返回的设备描述符返回:<0 错误。其绝对值为错误号 >=0 密码计数器计数值。此值表示试密码的机会。举例:IC_ReadCount_SLE4428(ICDev) 4. __int16 IC_CheckPass_SLE4428 (HANDLE ICDev, unsigned char* Password)说明:校验密码(用于SLE4428型) 是IC_CheckPass的宏调用:HANDLE ICDev ---- InitComm返回的设备描述符 unsigned char * Password---- 卡密码 2字节返回:<0 错误。其绝对值为错误号 >=0 校验密码正确举例:IC_CheckPass_SLE4428(ICDev,"11") 校验卡密码为11。 5.__int16 IC_ChangePass_SLE4428 (HANDLE ICDev, unsigned char* Password)说明:更改密码(用于SLE4428型)调用:HANDLE ICDev ---- InitComm返回的设备描述符 unsigned char * Password---- 新密码 2字节返回:<0 错误。其绝对值为错误号 >0 更改密码正确举例:IC_ChangePass_SLE4442(ICDev,"22") 将密码改为22。 <4>、ATMEL AT88SC101/102/103卡专用函数: 1.__int16 IC_CheckPass_102(HANDLE ICDev,unsigned char* Password)说明:校验密码(用于102型)调用:HANDLE ICDev ---- InitComm返回的设备描述符 unsigned char * Password---- 卡密码 2字节返回:<0 错误。其绝对值为错误号 >=0 校验密码正确举例:IC_CheckPass_102(ICDev,"11") 校验卡密码11。 2.__int16 IC_ChangePass_102(HANDLE ICDev,unsigned char* Password)说明:更改密码(用于102型)调用:HANDLE ICDev ---- InitComm返回的设备描述符 unsigned char * Password---- 新密码 2字节返回:<0 错误。其绝对值为错误号 >0 更改密码正确举例:IC_ChangePass_102(ICDev,"22") 将卡密码改为22。 3. __int16 IC_ReadCount_102 (HANDLE ICDev)说明:读取102卡密码计数器值调用:HANDLE ICDev ---- InitComm返回的设备描述符返回:<0 错误。其绝对值为错误号 >=0 密码计数器计数值。此值表示试密码的机会。举例:IC_ReadCount_102(ICDev)4.__int16 IC_Erase_102(HANDLE ICDev,__int16 Offset,__int16 len)说明:擦除数据(102型),用于烧熔丝之前的卡调用:HANDLE ICDev ---- InitComm返回的设备描述符 __int16 Offset ---- 擦除的起始地址(必须是偶数) __int16 len---- 擦除字节数(必须是偶数)返回:<0 错误。其绝对值为错误号 >=0 写入数据长度举例:IC_Erase_102(ICDev,24,32)擦除从绝对偏移址开始的32个字节。5.__int16 IC_CheckAZPass_102(HANDLE ICDev,__int16 Zone, unsigned char* Password)说明:校验应用区密码(102卡),用于烧熔丝后的卡。 如果密码正确,将擦除该区的数据,即全部置为"FF"调用:HANDLE ICDev ---- InitComm返回的设备描述符 __int16 Zone ---- 102卡的应用区号 unsigned char * Password---- 应用区密码 应用区一的擦除密码为六个字节,从偏移址86开始,缺省为16进制FFFFFFFFFFFF; 应用区二的擦除密码为四个字节,从偏移址156开始,缺省为16进制FFFFFFFF。返回:<0 错误。其绝对值为错误号 >=0 *** 作成功,但并不表示密码正确,只有检查是否擦除才能判断。举例:IC_CheckAZPass_102(ICDev,1,"111111") 校验应用区一,密码为"111111"。 6.__int16 IC_ChangeAZPass_102(HANDLE ICDev,__int16 Zone, unsigned char* Password)说明:更改应用区密码(102卡),烧熔丝前密码可改 是IC_ChangePass的宏调用:HANDLE ICDev ---- InitComm返回的设备描述符 __int16 Zone ---- 102卡的应用区号 unsigned char * Password---- 应用区密码 应用区一的擦除密码为六个字节,从偏移址86开始,缺省为16进制FFFFFFFFFFFF; 应用区二的擦除密码为四个字节,从偏移址156开始,缺省为16进制FFFFFFFF。返回:<0 错误。其绝对值为错误号 >=0 *** 作成功举例:IC_ChangeAZPass_102(ICDev,1,"222222") 将应用区一的密码改为"222222"。 7.__int16 IC_Fuse_102 (HANDLE ICDev)说明:烧102卡的熔丝*调用:HANDLE ICDev ---- InitComm返回的设备描述符返回:<0 错误。其绝对值为错误号 =0 正确举例:IC_Fuse_102(ICDev)<5>、西门子4406卡(电话卡)专用函数: 1.__int16 IC_RValue(HANDLE ICDev)说明:读S4406卡的值调用:HANDLE ICDev ---- InitComm返回的设备描述符返回:<0 错误,见错误码 >=0 卡中剩下的值举例:IC_RValue(ICDev) 2. __int16 IC_DEValue(HANDLE ICDev,__int16 num)说明:减S4406卡的值调用:HANDLE ICDev ---- InitComm返回的设备描述符 __int16 num---- 要减的值返回:<0 错误,见错误码 =0 正确举例:IC_DEValue(ICDev,1) 将S4406卡的值减"1". <6>、ATMEL 1604卡专用函数: 1.__int16 IC_CheckPass_1604(HANDLE ICDev,__int16 Area,unsigned char* Password)说明:校验密码(用于1604型)调用:HANDLE ICDev ---- InitComm返回的设备描述符 Area:为要效验的密码类型, 0: 卡的总密码 1: AT88SC1604卡第一区的密码 2: AT88SC1604卡第二区的密码 3: AT88SC1604卡第三区的密码 4: AT88SC1604卡第四区的密码 11: AT88SC1604卡第一区的擦除密码 12: AT88SC1604卡第二区的擦除密码 13: AT88SC1604卡第三区的擦除密码 14: AT88SC1604卡第四区的擦除密码 unsigned char * Password---- 卡密码 2字节返回:<0 错误。其绝对值为错误号 >=0 效验密码正确举例:IC_CheckPass_1604(ICDev,0,"11") 效验卡密码为"11"。 2.__int16 IC_ChangePass_1604(HANDLE ICDev,__int16 Area,unsigned char* Password)说明:改变密码(用于1604型)调用:HANDLE ICDev ---- InitComm返回的设备描述符 Area:为要改变的密码类型, 0: 卡的总密码 1: AT88SC1604卡第一区的密码 2: AT88SC1604卡第二区的密码 3: AT88SC1604卡第三区的密码 4: AT88SC1604卡第四区的密码 11: AT88SC1604卡第一区的擦除密码 12: AT88SC1604卡第二区的擦除密码 13: AT88SC1604卡第三区的擦除密码 14: AT88SC1604卡第四区的擦除密码 unsigned char * Password---- 卡密码 2字节返回:<0 错误。其绝对值为错误号 >=0 改变密码正确举例:IC_CheckPass_1604(ICDev,0,"22") 改变密码为“22”。 3. __int16 IC_ReadCount_1604 (HANDLE ICDev,__int16 area)说明:读取102卡密码计数器值调用:HANDLE ICDev ---- InitComm返回的设备描述符 Area:为要读错误计数的类型, 0: 卡的总密码错误计数 1: AT88SC1604卡第一区的密码错误计数 11: AT88SC1604卡第一区的擦除密码错误计数 12: AT88SC1604卡第二区的擦除密码错误计数 13: AT88SC1604卡第三区的擦除密码错误计数 14: AT88SC1604卡第四区的擦除密码错误计数返回:<0 错误。其绝对值为错误号 >=0 密码计数器计数值。此值表示试密码的机会。举例:IC_ReadCount_1604(ICDev,0) 4.__int16 IC_Fuse_1604 (HANDLE ICDev)说明:烧1604卡的熔丝*调用:HANDLE ICDev ---- InitComm返回的设备描述符返回:<0 错误。其绝对值为错误号 =0 正确举例:IC_Fuse_1604(ICDev)三、错误信息参考0x80(128) IC卡或硬件出错0x82(130) 通讯出错0x83(131) 密码校验错0x84(132) IC卡读出错0x86(134) 没有插卡或卡没有插好0xEE(238) 通讯超时0xE1(225) 接收通讯错误0xE2(226) 发送通讯错误0x01(001) 其它IC卡 *** 作错误0xFF(255) 其它IC卡 *** 作错误四、卡类型代码参考0x02 西门子4406系列0x04 西门子4418/4428系列0x08 西门子4404系列0x10 西门子4432/4442系列0x20 ATMEL AT88SC101/102/103系列0x40 ATMEL AT24C01A/02/04/08/16系列五、几种常用IC卡的初始密码AT88SC102用户密码(SECURITY CODE):F0F0 应用区1擦除密码(EREASE CODE 1):FF FF FF FF FF FF 应用区2擦除密码(EREASE CODE 2):FF FF FF FFAT88SC1604 用户密码(SECURITY CODE):F0F0 第一区的密码 第二区的密码 第三区的密码 第四区的密码 第一区的擦除密码 第二区的擦除密码 第三区的擦除密码 第四区的擦除密码 以上密码全部为:FF FFSLE4442 用户密码(SECURITY CODE):FF FF FFSLE4428 用户密码(SECURITY CODE):FF FFSLE4404 用户密码(SECURITY CODE):55 55擦除密码(EREASE CODE):FFFFFF以上密码均为16进制数。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)