单片机软件开发面试题(单片机软件工程师面试题)

软件开发 2249
今天给各位分享单片机软件开发面试题的知识,其中也会对单片机软件工程师面试题进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、电子专业 面试题

今天给各位分享单片机软件开发面试题的知识,其中也会对单片机软件工程师面试题进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

电子专业 面试题

我也是电子专业的,主要是考察数电模电和单片机,如果你是搞通讯设备,信号与系统和数字信号处理也要准备的,以下是我搜集的一些试题和部分答案,希望对你有帮助!

模拟电路

1、 基尔霍夫定理的内容是什么?(仕兰微电子)

基尔霍夫电流定律是一个电荷守恒定律,即在一个电路中流入一个节点的电荷与流出同一个节点的电荷相等.

基尔霍夫电压定律是一个能量守恒定律,即在一个回路中回路电压之和为零.

2、平板电容公式(C=εS/4πkd)。(未知)

3、最基本的如三极管曲线特性。(未知)

4、描述反馈电路的概念,列举他们的应用。(仕兰微电子)

5、负反馈种类(电压并联反馈,电流串联反馈,电压串联反馈和电流并联反馈);负反馈的优点(降低放大器的增益灵敏度,改变输入电阻和输出电阻,改善放大器的线性和非线性失真,有效地扩展放大器的通频带,自动调节作用)(未知)

6、放大电路的频率补偿的目的是什么,有哪些方法?(仕兰微电子)

7、频率响应,如:怎么才算是稳定的,如何改变频响曲线的几个方法。(未知)

8、给出一个查分运放,如何相位补偿,并画补偿后的波特图。(凹凸)

9、基本放大电路种类(电压放大器,电流放大器,互导放大器和互阻放大器),优缺 点

,特别是广泛采用差分结构的原因。(未知)

10、给出一差分电路,告诉其输出电压Y+和Y-,求共模分量和差模分量。(未知)

11、画差放的两个输入管。(凹凸)

12、画出由运放构成加法、减法、微分、积分运算的电路原理图。并画出一个晶体管级的

运放电路。(仕兰微电子)

13、用运算放大器组成一个10倍的放大器。(未知)

14、给出一个简单电路,让你分析输出电压的特性(就是个积分电路),并求输出端某点

的 rise/fall时间。(Infineon笔试试题)

15、电阻R和电容C串联,输入电压为R和C之间的电压,输出电压分别为C上电压和R上电压,要求制这两种电路输入电压的频谱,判断这两种电路何为高通滤波器,何为低通滤波器。当RC period - setup ? hold

16、时钟周期为T,触发器D1的建立时间最大为T1max,最小为T1min。组合逻辑电路最大延迟为T2max,最小为T2min。问,触发器D2的建立时间T3和保持时间应满足什么条件.(华为)

17、给出某个一般时序电路的图,有Tsetup,Tdelay,Tck-q,还有 clock的delay,写出决定最大时钟的因素,同时给出表达式。(威盛VIA 2003.11.06 上海笔试试题)

18、说说静态、动态时序模拟的优缺点。(威盛VIA

2003.11.06 上海笔试试题)

19、一个四级的Mux,其中第二级信号为关键信号 如何改善timing。(威盛VIA2003.11.06 上海笔试试题)

20、给出一个门级的图,又给了各个门的传输延时,问关键路径是什么,还问给出输入,使得输出依赖于关键路径。(未知)

21、逻辑方面数字电路的卡诺图化简,时序(同步异步差异),触发器有几种(区别,优点),全加器等等。(未知)

22、卡诺图写出逻辑表达使。(威盛VIA 2003.11.06 上海笔试试题)

____________________________________________________________

信号与系统

1、的话音频率一般为300~3400HZ,若对其采样且使信号不失真,其最小的采样频率应为多大?若采用8KHZ的采样频率,并采用8bit的PCM编码,则存储一秒钟的信号数据量有多大?(仕兰微面试题目)

2、什么耐奎斯特定律,怎么由模拟信号转为数字信号。(华为面试题)

3、如果模拟信号的带宽为 5khz,要用8K的采样率,怎么办?lucent) 两路?

4、信号与系统:在时域与频域关系。(华为面试题)

5、给出时域信号,求其直流分量。(未知)

6、给出一时域信号,要求(1)写出频率分量,(2)写出其傅立叶变换级数;(3)当波形经过低通滤波器滤掉高次谐波而只保留一次谐波时,画出滤波后的输出波形。(未知)

7、sketch 连续正弦信号和连续矩形波(都有图)的傅立叶变换 。(Infineon笔试试题)

8、拉氏变换和傅立叶变换的表达式及联系。(新太硬件面题)

____________________________________________________________

DSP、嵌入式、软件等

1、请用方框图描述一个你熟悉的实用数字信号处理系统,并做简要的分析;如果没有,也可以自己设计一个简单的数字信号处理系统,并描述其功能及用途。(仕兰微面试题目)

2、数字滤波器的分类和结构特点。(仕兰微面试题目)

3、IIR,FIR滤波器的异同。(新太硬件面题)

4、拉氏变换与Z变换公式等类似东西,随便翻翻书把如.h(n)=-a*h(n-1)+b*δ(n) a.求h(n)的z变换;b.问该系统是否为稳定系统;c.写出FIR数字滤波器的差分方程;(未知)

5、DSP和通用处理器在结构上有什么不同,请简要画出你熟悉的一种DSP结构图。(信威dsp软件面试题)

6、说说定点DSP和浮点DSP的定义(或者说出他们的区别)(信威dsp软件面试题)

7、说说你对循环寻址和位反序寻址的理解.(信威dsp软件面试题)

8、请写出【-8,7】的二进制补码,和二进制偏置码。用Q15表示出0.5和-0.5.(信威dsp软件面试题)

9、DSP的结构(哈佛结构);(未知)

10、嵌入式处理器类型(如ARM),操作系统种类(Vxworks,ucos,winCE,linux),操作系统

方面偏CS方向了,在CS篇里面讲了;(未知)

11、有一个LDO芯片将用于对手机供电,需要你对他进行评估,你将如何设计你的测试项目?

12、某程序在一个嵌入式系统(200M CPU,50M SDRAM)中已经最优化了,换到零一个系统

(300M CPU,50M SDRAM)中是否还需要优化? (Intel)

13、请简要描述HUFFMAN编码的基本原理及其基本的实现方法。(仕兰微面试题目)

14、说出OSI七层网络协议中的四层(任意四层)。(仕兰微面试题目)

15、A) (仕兰微面试题目)

#i nclude

void testf(int*p)

{

*p+=1;

}

main()

{

int *n,m[2];

n=m;

m[0]=1;

m[1]=8;

testf(n);

printf("Data v alue is %d ",*n);

}

------------------------------

B)

#i nclude

void testf(int**p)

{

*p+=1;

}

main()

{int *n,m[2];

n=m;

m[0]=1;

m[1]=8;

testf(n);

printf(Data v alue is %d",*n);

}

下面的结果是程序A还是程序B的?

Data v alue is 8

那么另一段程序的结果是什么?

16、那种排序方法最快? (华为面试题)

17、写出两个排序算法,问哪个好?(威盛)

18、编一个简单的求n!的程序 。(Infineon笔试试题)

19、用一种编程语言写n!的算法。(威盛VIA 2003.11.06 上海笔试试题)

20、用C语言写一个递归算法求N!;(华为面试题)

描述反馈电路的概念,列举他们的应用。

反馈,就是在电子系统中,把输出回路中的电量输入到输入回路中去。

反馈的类型有:电压串联负反馈、电流串联负反馈、电压并联负反馈、电流并联负反馈。

负反馈的优点:降低放大器的增益灵敏度,改变输入电阻和输出电阻,改善放大器的线性和非线性失真,有效地扩展放大器的通频带,自动调节作用。

电压负反馈的特点:电路的输出电压趋向于维持恒定。

电流负反馈的特点:电路的输出电流趋向于维持恒定。

3、有源滤波器和无源滤波器的区别

无源滤波器:这种电路主要有无源元件R、L和C组成

有源滤波器:集成运放和R、C组成,具有不用电感、体积小、重量轻等优点。

集成运放的开环电压增益和输入阻抗均很高,输出电阻小,构成有源滤波电路后还具有一定的电压放大和缓冲作用。但集成运放带宽有限,所以目前的有源滤波电路的工作频率难以做得很高。

数字电路

1、同步电路和异步电路的区别是什么?

同步电路:存储电路中所有触发器的时钟输入端都接同一个时钟脉冲源,因而所有触发器的状态的变化都与所加的时钟脉冲信号同步。

异步电路:电路没有统一的时钟,有些触发器的时钟输入端与时钟脉冲源相连,这有这些触发器的状态变化与时钟脉冲同步,而其他的触发器的状态变化不与时钟脉冲同步。

2、什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求?

将两个门电路的输出端并联以实现与逻辑的功能成为线与。

在硬件上,要用OC门来实现,同时在输出端口加一个上拉电阻。

由于不用OC门可能使灌电流过大,而烧坏逻辑门。

3、解释setup和hold time violation,画图说明,并说明解决办法。(威盛VIA2003.11.06上海笔试试题)

Setup/hold time是测试芯片对输入信号和时钟信号之间的时间要求。建立时间是指触发器的时钟信号上升沿到来以前,数据稳定不变的时间。输入信号应提前时钟上升沿(如上升沿有效)T时间到达芯片,这个T就是建立时间-Setup time.如不满足setup time,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿,数据才能被打入触发器。

保持时间是指触发器的时钟信号上升沿到来以后,数据稳定不变的时间。如果hold time不够,数据同样不能被打入触发器。

建立时间(Setup Time)和保持时间(Hold time)。建立时间是指在时钟边沿前,数据信号需要保持不变的时间。保持时间是指时钟跳变边沿后数据信号需要保持不变的时间。如果数据信号在时钟沿触发前后持续的时间均超过建立和保持时间,那么超过量就分别被称为建立时间裕量和保持时间裕量。

4、什么是竞争与冒险现象?怎样判断?如何消除?(汉王笔试)

在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争。

产生毛刺叫冒险。如果布尔式中有相反的信号则可能产生竞争和冒险现象。

解决方法:一是添加布尔式的消去项,二是在芯片外部加电容。

5、名词:SRAM、SSRAM、SDRAM

SRAM:静态RAM

DRAM:动态RAM

SSRAM:Synchronous Static Random Access Memory同步静态随机访问存储器。它的一种类型的SRAM。SSRAM的所有访问都在时钟的上升/下降沿启动。地址、数据输入和其它控制信号均于时钟信号相关。这一点与异步SRAM不同,异步SRAM的访问独立于时钟,数据输入和输出都由地址的变化控制。

SDRAM:Synchronous DRAM同步动态随机存储器

6、FPGA和ASIC的概念,他们的区别。(未知)

答案:FPGA是可编程ASIC。

ASIC:专用集成电路,它是面向专门用途的电路,专门为一个用户设计和制造的。根据一个用户的特定要求,能以低研制成本,短、交货周期供货的全定制,半定制集成电路。与 门阵列等其它ASIC(Application Specific IC)相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点。

7、什么叫做OTP片、掩膜片,两者的区别何在?

OTP means one time program,一次性编程

MTP means multi time program,多次性编程

OTP(One Time Program)是MCU的一种存储器类型

MCU按其存储器类型可分为MASK(掩模)ROM、OTP(一次性可编程)ROM、FLASHROM等类型。

MASKROM的MCU价格便宜,但程序在出厂时已经固化,适合程序固定不变的应用场合;

FALSHROM的MCU程序可以反复擦写,灵活性很强,但价格较高,适合对价格不敏感的应用场合或做开发用途;

OTP ROM的MCU价格介于前两者之间,同时又拥有一次性可编程能力,适合既要求一定灵活性,又要求低成本的应用场合,尤其是功能不断翻新、需要迅速量产的电子产品。

8、单片机上电后没有运转,首先要检查什么?

首先应该确认电源电压是否正常。用电压表测量接地引脚跟电源引脚之间的电压,看是否是电源电压,例如常用的5V。

接下来就是检查复位引脚电压是否正常。分别测量按下复位按钮和放开复位按钮的电压值,看是否正确。

然后再检查晶振是否起振了,一般用示波器来看晶振引脚的波形,注意应该使用示波器探头的“X10”档。另一个办法是测量复位状态下的IO口电平,按住复位键不放,然后测量IO口(没接外部上拉的P0口除外)的电压,看是否是高电平,如果不是高电平,则多半是因为晶振没有起振。

另外还要注意的地方是,如果使用片内ROM的话(大部分情况下如此,现在已经很少有用外部扩ROM的了),一定要将EA引脚拉高,否则会出现程序乱跑的情况。有时用仿真器可以,而烧入片子不行,往往是因为EA引脚没拉高的缘故(当然,晶振没起振也是原因只一)。经过上面几点的检查,一般即可排除故障了。如果系统不稳定的话,有时是因为电源滤波不好导致的。在单片机的电源引脚跟地引脚之间接上一个0.1uF的电容会有所改善。如果电源没有滤波电容的话,则需要再接一个更大滤波电容,例如220uF的。遇到系统不稳定时,就可以并上电容试试(越靠近芯片越好)。

1、二极管的导通时的压降。

答:0.7V。

2、三极管的工作条件。

答:B极(基极)在有一定的电压时,发射极电压应该在0.3V以上。

3、TTL电平的电压值。

答:5V上下浮动10%,即4.5V―5.5V。

4、电路分析主要讲的是什么,或者是围绕着什么讲的?

答:两个定理,即基尔霍夫电压定理,基尔霍夫电流定理。

5、数字信号处理的实质。

答:数字算法或数学算法。通过数学或数字算法实现频谱搬移,从而达到滤

波的效果。

6、单片机总线。

答:数据总线、控制总线、地址总线。P0口为I/O口,即可以是数据线,也可以是地址线,倘若都要使用时,要用锁存器将二者分开,做地址线时,充当地址线的低8位,高8位由P2口充当。

7、晶振的接法或分类。

答:内接晶振和外接晶振。晶振与口线的距离越近越好。否则,会对其他部分造成高频干扰。

8、键盘与控制器(或者是单片机)连接时时如何工作的。

答:通过控制器(或者是单片机)对键盘扫描,即:通过键盘与控制器相连导线上的电平值来判断按下的键盘,从而判断相应的键盘值,通过中断,调用相应的中断服务子程序。一般是通过键盘的行扫描和列扫描判断键盘。

9、通信的三种解调方式。

答:调频、调相、调幅。

10、语音信号的范围和传输比特。

答:语音信号的频率为300―3400赫兹,取上限频率。一般取4000赫兹,有抽样定理可知最低抽样频率为8000赫兹,中国采用PCM编码调制,即位8段,因此传输比特为64K。(顺便提一点,中国采用的是A律,与欧洲是一样的,即13折线,日本、美国用的是u律,15折线)

11、2M带宽。

答:语音传输是64K,中国用的是30/32线路系统,64K*32=2048k,即为我们所说的2M.

12、无线传输为什么都是用的高频。

答:从客观上来说,使用的频段是已经订好的,常用的是80M―120M。从专业角度上来分析,是因为在高频段上能提供较为理想的信道,达到信息良好的传输和带宽的资源有效利用,而且这样所提供的信道带宽也比较宽。

13、CDMA技术。

答:CDMA技术是码分多址技术,是无线通讯产品和服务的新时代率先开发的、用于提供十分清晰的语音效果的数字技术。通过利用数字编码"扩谱"无线电频率技术,CDMA能够提供比其他无线技术更好的、成本更低的语音效果、保密性、系统容量和灵活性,以及更加完善的服务。

14、CDMA的工作。

答:CDMA利用扩谱技术将语音分解成数字化的小片断,然后进行编码,以区别每个电话。因而,大量的用户能够共享相同的频谱,从而大大提高系统的性能。也就是说,CDMA使无线服务提供商将更多的数字化信号挤压到一定的无线网络片断中去。

15、常用的信道复用技术。

答:频分多路复用(FDM),时分多路复用(TDM),频分多址 (FDMA),时分多址(TDMA),码分多址(CDMA)。

16、单片机对系统的滤波。

答:单片机对系统只能实现数字滤波,即通过一种数字算法对系统进行滤波。常用的有中值滤波,平滑滤波,程序滤波等

单片机工程师面试该准备些什么?

1、对单片机应用场合有充分的了解,能够在应用项目中选择合适的单片机和外围芯片的型号;能够根据系统指标很快的设计出一个应用系统的体系结构;在深圳,一个项目的时间只有一个星期左右,因为这些东西谁都能做,主要看谁能够做的又快又好;

2、熟练使用ASM和C等相应的单片机语言,有良好的编程风格和一定的编程技巧;

3、能够进行简单的PCB版图设计,至少能够设计出有一定抗干扰能力的单片机电路板;

4、对控制、信号系统有所了解,知道必要的算法;

5、熟悉计算机方向的简要开发,能够使用计算机做一些简单的主机端软件;

6、对模拟、数字电路、总线等比较熟悉,能够使用它们进行单片机的外围接口。

以上信息来自问问我建筑人才网

单片机面试题1

如果是16位机,int是16位的,返回1

如果是32位机,int是16位的,返回2

如果是32位机,int是32位的,返回1

面试单片机的问题及技巧

说几个我碰到过的吧

说出51的5个中断名,及其对应的中断入口地址。

描述冒泡排序法。

51单片机第9脚是什么?

画出一个AT89S52的最小系统,并扩展1个外部RAM,并要求可实现ISP。

51单片机延时1s的程序,汇编、c分别写一个,要求使用中断。

基于51实现4x4的键盘阵列,要求画出原理图,并写出程序(注意防抖动)。

现在看来,都很简单了,呵呵~

至于技巧嘛,可以告诉你一点,高技术的人都希望自己的兵事热爱这个行业的,而不希望他们来公司的目的仅仅是为了赚钱

当然,如果你有做过可以在现场演示的实物的话,那是最好不过了,千万别忘了带上——“学习板”这种东西还是算了带了吧。呵呵,开个玩笑

华为软件工程笔试题和面试题答案附答案

写一个程序, 要求功能:求出用1,2,5这三个数不同个数组合的和为100的组合个数。

如:100个1是一个组合,5个1加19个5是一个组合。。。。 请用C++语言写。

答案:最容易想到的算法是:设x是1的个数,y是2的个数,z是5的个数,number是组合数注意到0=x=100,0=y=50,0=z=20,所以可以编程为:number=0;for (x=0; x=100; x++)for (y=0; y=50; y++)for (z=0; z=20; z++)if ((x+2*y+5*z)==100)number++;coutnumberendl;

上面这个程序一共要循环100*50*20次,效率实在是太低了事实上,这个题目是一道明显的数学问题,而不是单纯的编程问题。我的解法如下:因为x+2y+5z=100所以x+2y=100-5z,且z=20 x=100 y=50所以(x+2y)=100,且(x+5z)是偶数对z作循环,求x的可能值如下:z=0, x=100, 98, 96, ... 0z=1, x=95, 93, ..., 1z=2, x=90, 88, ..., 0z=3, x=85, 83, ..., 1z=4, x=80, 78, ..., 0......z=19, x=5, 3, 1z=20, x=0因此,组合总数为100以内的偶数+95以内的奇数+90以内的偶数+...+5以内的奇数+1,即为:(51+48)+(46+43)+(41+38)+(36+33)+(31+28)+(26+23)+(21+18)+(16+13)+(11+8)+(6+3)+1某个偶数m以内的偶数个数(包括0)可以表示为m/2+1=(m+2)/2某个奇数m以内的奇数个数也可以表示为(m+2)/2所以,求总的组合次数可以编程为:number=0;for (int m=0;m=100;m+=5){number+=(m+2)/2;}coutnumberendl;这个程序,只需要循环21次, 两个变量,就可以得到答案,比上面的那个程序高效了许多倍----

只是因为作了一些简单的数学分析这再一次证明了:计算机程序=数据结构+算法,而且算法是程序的灵魂,对任何工程问题,当用软件来实现时,必须选取满足当前的资源限制,用户需求限制,开发时间限制等种种限制条件下的最优算法。而绝不能一拿到手,就立刻用最容易想到的算法编出一个程序了事

【华为硬件笔试题1】

一 选择 13个题目,没有全部抄下来,涉及的课程有电路,模拟电路,数字电路,信号与系统,微机原理,网络,数字信号处理

1.微分电路 2.CISC,RISC 3.数据链路层

二 填空 10个题目,没有全部抄下来,涉及的课程有电路,模拟电路,数字电路,信号与系统,微机原理,网络,数字信号处理 有关于 1.TIC6000 DSP 2.二极管 3.RISC 4.IIR

三 简答 1.x(t)的傅立叶变换为X(jw)=$(w)+$(w-PI)+$(w-5) h(t)=u(t)-u(t-2) 问: (1),x(t)是周期的吗? (2),x(t)*h(t)是周期的吗? (3),两个非周期的信号卷积后可周期吗? 2.简述分组交换的特点和不足

四 分析设计 1.波形变换题目 从正弦波-方波-锯齿波-方波,设计电路 2.74161计数器组成计数电路,分析几进制的 3.用D触发器构成2分频电路 4.判断MCS-51单片机的指令正确还是错误,并指出错误原因 (1) MUL R0,R1 (2) MOV A,@R7 (3) MOV A,#3000H (4) MOVC @A+DPTR,A (5) LJMP #1000H () 5.MCS-51单片机中,采用12Mhz时钟,定时器T0采用模式1(16位计数器),请问在下面程序中,p1.0的输出频率 MOV TMOD,#01H SETB TR0 LOOP:MOV TH0,#0B1H MOV TL0,#0E0H LOOP1:JNB TF0,LOOP1 CLR TR0 CPL P1.0 SJMP LOOP

【华为硬件笔试题2】

全都是几本模电数电信号单片机题目

1.用与非门等设计全加法器

2.给出两个门电路让你分析异同

3.名词:sram,ssram,sdram

4.信号与系统:在时域与频域关系

5.信号与系统:和4题差不多

6.晶体振荡器,好像是给出振荡频率让你求周期(应该是单片机的,12分之一周期.. ..)

7.串行通信与同步通信异同,特点,比较

8.RS232c高电平脉冲对应的TTL逻辑是?(负逻辑?)

9.延时问题,判错

10.史密斯特电路,求回差电压

11.VCO是什么,什么参数(压控振荡器?)

12. 用D触发器做个二分颦的电路.又问什么是状态图

13. 什么耐奎斯特定律,怎么由模拟信号转为数字信号

14. 用D触发器做个4进制的计数

15.那种排序方法最快?

【华为硬件笔试题3】

第一部分是:先给你一个 字符与文字对应的表,然后再给你几个文字选出对应的字符组合。 很简单,考察你的速度的,动作要快,应该直接在答题卡上图写答案。 第二部分就是考察智力的,就是找图形数字的规律,然后让你添一个空 还有一些简单的计算,需要速度快,时间有点紧。第三部分就是 一些你日常遇到的情况,你如何解决,这个没有正确答案。接下来就是专业考试了,不同职位内容也不同。ASIC是数字电路的知识(还有点FPGA), 大致如下:1.简述数据在多时钟域中跨时钟域的几种处理方法。 2.写一个简单逻辑电路的输出,并化简。 3.用硬件描述语言(Verilog HDL或VHDL)写出FIFO控制器的程序。 4.用一个3-8译码器和一个或门 组成一个三人表决器 两个人或者两个以上输入1时,输出为1。 5.用于非门和非门 设计一个两位二进制数的平方器。 6.啥是零点漂移,在多级耦合的运放电路中的危害是啥,给出一个抑制零点漂移的电路,计算输出表达式。 7.用逻辑电路实现一个三位二进制数对3取模的电路。 8.画出RS触发器的电路图。 9.设计一个监测连续3个1的序列监测器,当输入3个或者多于3个1时,输出为1,画出原始状态图,状态表,并化简。

1 2 3 4 5 6 7

51单片机C语言面试题目

1,怎么看起来像是伸手党啊。你去做了没?不是把题目抛上来,而应该是把你做题过程中遇到的疑问提出来!

2,这个都搞不出来的话,请认真考虑自己适不适合搞单片机。

关于单片机软件开发面试题和单片机软件工程师面试题的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

扫码二维码