飞思卡尔单片机高效C语言编程(中文)

合集下载

freescale MC9S12P128中文手册

freescale MC9S12P128中文手册

Chapter1 Device Overview MC9S12P-Family 介绍The MC9S12P 系列单片机是经过优化后有着低成本、高性能、低引脚数的汽车专业级单片机产品,该产品倾向于弥补高端16位单片及产品如MC9S12XS和低端8位单片机产品之间的空缺。

MC9S12P 主要针对于要求使用CAN 或者 LIN/J2602通讯接口的汽车应用产品,典型的应用案例包括车身控制器、乘坐人员检测、车门控制、座椅控制、遥控车门开关信号接收器、智能执行器、车灯模块、智能接线器。

The MC9S12P 系列单片机使用了很多MC9S12XS系列单片机相同的功能,包括片内闪存错误纠正代码(ECC)、一个专为数据诊断或者数据存储的单独的数据闪存模块、高速AD转换器和高频调制锁相环(IPLL)有效改善电磁兼容性能。

MC9S12P系列单片机提供的所有16为单片机优点和微处理器效率,同时保持飞思卡尔用户熟悉的8位及16位单片机,低成本,功耗,EMC和高效的代码80针QFP、64针LQFP、40针QFN封装产品,最大限度的与MC9S12尺寸的优点,如同MC9S12XS一样可以无需等待外围设备和内存的状态既可以运行16为带款的寻址,MC9S12P系列单片机主要有XS引脚兼容. I/O口在各种模式下都可以使用,同时具有中断功能的I/O口还可以在停止或等待模式下唤醒。

芯片特性表一:提供了MC9S12P家庭成员特征摘要,或D寄存器擦除或者编程需要最低总线频率为1MHZ芯片功能• S12 CPU 内核• 高达128 KB具有ECC功能的片上闪存• 4 Kbyte带ECC功能的数据闪存• 高达6 Kb片上静态存储器(SRAM)• 具有内部滤波器的锁相环倍频器 (IPLL)• 4–16 MHz 皮尔斯振荡器• 1 MHz内部RC振荡器• 定时器 (TIM) 具有16位输入捕捉、输出比较、计数器脉冲累加器功能• 具有8位6通道的脉冲调制模块(PWM)• 10通道12位分辨率的逐次逼近AD转换器• 1个串行通信外部接口(SPI)• 1个支持局域网通讯串行通信(SCI) 模块•一个多可扩展控制器区域网络(MSCAN) 模块 (支持CAN 协议B)•片上电压调节器 (VREG) 可对内部供电及内部电压整流• 自主周期中断 (API)模块特征CPUS12 CPU 是一个高速的16位处理单元:•全16-bit数据通道提供有效的数学运算和高速的数学执行• 包含很多单字节指令,可以有效的利用ROM空间• 宽域变址寻址功能:—采用堆栈指针作为所有变址操作的变址寄存器—除了在自增或自减模式下都可以利用程序计数器作为变址寄存器—使用A\B\D累加器做累加器偏移—自动变址,前递增(++a)、前递减(--a)、后递减(a--)、后递增(a++)(by –8 to +8)带ECC功能的片内闪存• 高达 128 Kb程序闪存空间— 32 位数据加7 位ECC (纠错码) 允许单字节纠错和双字节纠错— 512字节擦出扇区空间—自动编程和擦除算法—用户设置读写页面边界—具有可以防止偶然编程或者擦除的保护结构• 4 Kb 数据闪存空间— 16 位数据加6位纠错码允许单字节和双字节纠错功能— 256 字节的擦出扇区空间—自动编程和擦除算法—用户设置读写页面边界片内静态存储器高达6kb通用RAM外部晶振 (XOSC)• 闭环控制皮尔斯晶振频率为4MHZ---16MHZ—振幅增益控制输出电流—低谐波失真信号Signal with low harmonic distortion—低功耗—良好的噪声免疫—无需外部限流电阻—跨导尺寸优化提供良好的振荡器启动保证内部RC晶振 (IRC)• 可调的内部参考时钟—频率: 1 MHz—在–40°C to +125°C环境温度范围内调节精度达: %内部锁相环倍频器(IPLL)—无需外部元件—参考分频器和倍频器提供大变化量的时钟频率—自动带宽控制低频率抖动操作—自动锁定频率—可配置的选项,扩频减少电磁干扰EMC (频率调制frequency modulation)—参考时钟源:–外部 4–16 MHz 共振器/晶振 (XOSC)–内部RC晶振 1 MHz (IRC)系统支撑• 上电复位(POR)• 系统复位发生器• 非法寻址复位•低电压检测中断或复位• 实时中断 (RTI)• 计算机正常工作复位(COP) 开门狗—可通过相应窗口设置COP用以采用错误侦测复位通过位操作对闪存进行初始化复位•时钟监控器监控晶振功能正常工作定时器(TIM)• 8通道16位定时器可进行输入捕捉和输出比较• 16-bit带有7位精度预分频器的自由运行计数器•一通道16-bit 脉冲累加器脉冲带宽调制器 (PWM)• 6通道8位or 3 通道16-bit脉宽调制器—每个通道都可以对周期和占空比进行编程—中心对齐或者左对齐输出—宽频率范围内可编程逻辑时钟局域网控制器 (MSCAN)•速率达1Mbit/s, 满足CAN A, B 协议—标准和扩展数据帧— 0–8 字节长度—可编程比特率达1 Mbps•5个 FIFO(先进先出)的接收缓冲器•三个内部优先发送缓冲器• 灵活的标识符可编程选通滤波器s:— 2 x 32-bit— 4 x 16-bit— 8 x 8-bit•集成了低通滤波器的唤醒操作• 闭环反馈自检测• CAN 总线监听•总线关闭可通过软件干预或者自动恢复• 16-bit 接收发送信息时钟戳串行通信接口 (SCI)•可选择全双工或单工模式•标准的不归零格式•通过可编程脉宽调制选用 IrDA 反转归零格式• 13位波特率可选•可编程字符长度•可编程改变其接收和发送极性for transmitter and receiver •边沿触发接收唤醒•支持LIN总线的间隔检测和传输冲突检测Serial Peripheral Interface Module (SPI)•可配置 8- or 16-bit 数据大小•全双工或单线双向•全双工接收和发送• Master or slave 模式•最高位优先 or 最低位优先可换• 并口时钟频率相位和极性选择AD转换 (ATD)• 10通道12位AD转换器— 3微妙转换时间— 8-/10-/12-位解决方案—数据结果左对齐或右对齐—停止模式下使用内部晶振作为转换器晶振—低功耗模式下模拟信号比较唤醒—连续转换模式e—多通道扫描•引脚可作为IO口片内电压调节器(VREG)•具有带隙标准的线性电压稳压器• 具有低电压中断功能的低压检测器•上电复位 (POR) 电路•低电压复位功能 (LVR)•高温传感器背景调试 (BDM)• 非插入内存访问指令• 支持在线对片内非易始性存储单元编程调试器 (DBG)•64个入口跟踪缓冲器• 三个比较器 (A, B and C)—比较器A比较全16位地址总线额16位数据总线—精确寻址和寻址范围比较•两种匹配比较类型—标记位—程序强行置位该类型是在一数学公式出现后一个指令边界可用•四个跟踪模式•四个阶段状态序列发生器 stage state sequencer内部结构框图引脚图存储器映像表Table 1-2. Device Register Memory Map注意在表1-2中保留的寄存器空间不分配给任何模块,该寄存器的保留空间是留给以后使用的,对这些保留空间写操作没有任何效果,读该空间返回值都为零。

飞思卡尔8位单片机MC9S0813程序LCD编程C语言程序例

飞思卡尔8位单片机MC9S0813程序LCD编程C语言程序例
*功 能:初始化Lcd(HD44780),设置显示方式,清屏,AC自动+1 *
*参 数:无 *
*返 回:无 *
*-----------------------------------------------------*/
void LcdInit(void)
{
unsigned char i;
LcdData_D=0b11111111; //数据口为输出
Lcd_Command(0b00010100); //光标右移一个字符位,AC自动加1
Lcd_Command(0b00001100); //开显示,关光标显示,不闪烁
}
/*Lcd_Command:执行给定的cmd命令------------------------*
*功 能:执行给定的cmd命令,且延时 *
LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,写指令
LcdCtrl&=~(1<<LcdRW);
Lcd_Command(0b10000000); //后7位为DDRAM地址0x00
LcdCtrl|=1<<LcdRS;//RS、R/W=10,写数据到DDRAM中
LcdCtrl&=~(1<<LcdRW);
LcdData=cmd;//把指令码送到Lcd数据传送口
LcdCtrl|=(1<<LcdE); //Lcd开始接收数据
asm("NOP");
asm("NOP");
asm("NOP");
LcdCtrl&=~(1<<LcdE); //Lcd结束接收数据

飞思卡尔智能车dg128单片机控制程序代码

飞思卡尔智能车dg128单片机控制程序代码
}
void AD_Init(void)
{
ATD0CTL2=0xC0; //AD模块上电, 快速清零, 无等待模式, 禁止外部触发, 中断禁止
ATD0CTL3=0x44; //每次转换8个序列, FIFO, Freeze模式下继续转
ATD0CTL4=0x02; //10位精度, 采样时间为2个AD时钟周期,ATDClock=4MHz
//设置舵机
PWMCTL_CON01=1; //使得通道0,1成为16位pwm
PWMPER0 =0x75;
PWMPER1 =0x30; //舵机的频率是: 24M/8/30000=100Hz,T=10ms
PWMDTY01=4500; // 对应为4500/30000的占空比,待调整
Infrared_detect();
data_handle();
motor_ctl();
steer_ctl();
}
}
void interrupt 26 MDC_ISR(void)
{
static unsigned int number_count=0; static unsigned int start=0; static
go=2;
if(begin>=150)
go=3;
}
}
}
//-----系统初始化-----------------------
void system_init(void) //system initiat
void speed_ctl(void); //速度控制
void motor_ctl(void); //电机控制
void PACBInit(void);

飞思卡尔单片机教学

飞思卡尔单片机教学
模式选择及相关引脚 试时使用。XCLKS表示:1-使用pierce oscillator,0-使用colpitts oscillator ,内部有上拉电阻,所以悬空默认为1,只在RESET上升
沿锁存。LSTRB:在外部使用2片8位宽度存储器时和ADDR0,R/W配合使用。可可转转到到9页页图图。。
模式选择和PORTE复用 TEST:保留脚,接地 XIRQ:非屏蔽中断 IRQ:可屏蔽中断
RAM
EEPROM
Flash/ROM
外部扩展存储器

§3-5 复位及时钟—复位
上电复位
单片机自动检测VDD端的正跳变,启动自动工作。
外部复位
通过RESET引脚加一低电压,拉低超过一定时间 后可实现复位。
看门狗复位
帮助系统在软件跑飞后自动复位。
时钟监视器复位
利用内部的RC电路来保证时钟频率满足要求。
MC9S12DG128拥有128K的FLASH,8K的RAM,2K的EEPROM。
用于给单片机内部提供合适的电源电压,9S12单片机内核使用2.5V供电.VDD1\2,VSS1\3,VDDPLL若使用电压调整模块,这些引脚
电压调整模块及相关引脚 只用接去耦电容.注意VDD1.2的箭头是向外出的.
电压调整模块
存储器容量寄存器
RAM_SW2-RAM_SW0:分配系统RAM存储空间
寄存器区映射寄存器-INITRG
指定内部寄存器区基址的高5位。 则最小基址是$0000,最大基址为$7FFF(D7=0决定)。
使用时,一般定位在$0000开始的1K中。 因为前256个字节可以用直接地址(8 bit地址)访问,如果
Z: 0标志,当运算结果为0时,该位置1。
V: 2补码运算溢出标志,当运算结果出现2补码溢出时,该位置1。

C语言实现控制电机加减速正反转(飞思卡尔C代码)

C语言实现控制电机加减速正反转(飞思卡尔C代码)

用单片机控制直流电动机的正反转、加减速的程序如何用C语言写参考一下这个例子吧。

#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit PW1=P2^0 ;sbit PW2=P2^1 ; //控制电机的两个输入sbit accelerate=P2^2 ; //调速按键sbit stop=P2^3 ; //停止按键sbit left=P2^4 ; //左转按键sbit right=P2^5 ; //右转按键#define right_turn PW1=0;PW2=1 //顺时针转动#define left_turn PW1=1;PW2=0 //逆向转动#define end_turn PW1=1;PW2=1 //停转uint t0=25000,t1=25000; //初始时占空比为50%uint a=25000; // 设置定时器装载初值 25ms 设定频率为20Hz uchar flag=1; //此标志用于选择不同的装载初值uchar dflag; //左右转标志uchar count; //用来标志速度档位void keyscan(); //键盘扫描void delay(uchar z);void time_init(); //定时器的初始化void adjust_speed(); //通过调整占空比来调整速度//**********************************//void main(){time_init(); //定时器的初始化while(1){keyscan(); //不断扫描键盘程序,以便及时作出相应的响应}}//*************************************//void timer0() interrupt 1 using 0{if(flag){flag=0;end_turn;a=t0; //t0的大小决定着低电平延续时间TH0=(65536-a)/256;TL0=(65536-a)%256; //重装载初值}else{flag=1; //这个标志起到交替输出高低电平的作用if(dflag==0){right_turn; //右转}else{left_turn; //左转}a=t1; //t1的大小决定着高电平延续时间TH0=(65536-a)/256;TL0=(65536-a)%256; //重装载初值}}void time_init(){TMOD=0x01; //工作方式寄存器软件起动定时器定时器功能方式1 定时器0TH0=(65536-a)/256;TL0=(65536-a)%256; //装载初值ET0=1; //开启定时器中断使能EA=1; // 开启总中断TR0=0;}//****************************************//void delay(uchar z) //在12M下延时z毫秒{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}//******************************//void keyscan(){if(stop==0){TR0=0; //关闭定时器0 即可停止转动 end_turn;}if(left==0){TR0=1;dflag=1; //转向标志置位则左转}if(right==0){TR0=1;dflag=0; //转向标志复位则右转}if(accelerate==0){delay(5) ; //延时消抖if(accelerate==0){while(accelerate==0) ; //等待松手count++;if(count==1){t0=20000;t1=30000; //占空比为百分之60}if(count==2){t0=15000;t1=35000; //占空比为百分之70}if(count==3){t0=10000;t1=40000; //占空比为百分之80}if(count==4){t0=5000;t1=45000; //占空比为百分之90}if(count==5){count=0;}}}}功能特点:1)总线速度高达40 M Hz,CAN总线:3个1Mbps的CAN总线,兼容CAN2.0 A/B;2)128 KB程序Flash和8 KB DataFlash,用于实现程序和数据存储,均带有错误校正码(E CC);3)可配置A/D:16通道模数转换器;可选8位10位和12位精度,3μs的转换时间4)内嵌MS CAN模块用于CAN节点应用,内嵌支持LIN协议的增强型SIC模块和SPI模块;5)4通道16位计数器,CRG时钟和复位发生器:锁相环、看门狗、实时中断;增强型捕捉定时器;6)出色的低功耗特性,带有中断唤醒功能的10,实现唤醒休眠系统的功能;7)通道PWM:8位8通道或16位4通道PWM,易于实现电机控制。

飞思卡尔HC(S)08系列单片机开发及C语言编程简介

飞思卡尔HC(S)08系列单片机开发及C语言编程简介

1.CodeWarrior中建立新项目运行CodeWarrior(CW)集成开发平台,如图1-1所示在File菜单下点击New,弹出建立新项目的模板对话框,见图1-2。

一般的简便做法是在图1-2对话框左面的选择列表中选择“HC(S)08 New Project Wizard”,然后在右面的项目名“Project Name”输入条中,输入你要建立的新项目名字,再在“Location”一栏中用确定项目存放的文件夹路经,完成后按“OK”进入下一步。

你也可以在图1-2对话框左侧列表中选择“Empty Project”,这样生成的项目不包含任何文件,你必须在CodeWarrior中自己添加所有相关的文件内容。

我想除非有特殊理由,实际项目开发过程中很少采用这种麻烦的方式来建立自己的项目。

接下去是选择项目开发所用的编程语言,见图1-3。

最常用的当然是C语言编程。

有时因具体项目要求,除了C编程外还需要编写独立的汇编语言模块,那就再加选汇编工具(Assembly)。

C++编程在免费版和标准版CW下都不支持,只有在专业版下才可以使用。

编程语言选择完毕后按“Next”。

图1-1图1-2图1-3这时将出现如图1-4的对话框,让你选择项目开发对应的MCU 型号。

在CW5.x 版本下支持几乎所有的HC08和大部分HCS08单片机型号。

在最新的CW6.x 中,增加了飞思卡尔最低端的8位机(RS08系列)和低端32位处理器(Coldfire V1系列)的支持,但HC08系列的有些型号没有被包含在内。

由于HC08为比较老的产品系列,已经不推荐在新项目设计中选用,因此影响不会太大。

对于新用户来说,请尽量直接安装CW6.x 或以后推出的更新版本。

以典型的9S08系列为例,当你选择了一个MCU 型号后,在图1-4右侧会显示出所有针对该型号芯片可用的项目调试场景。

其中:∙ “Full Chip Simulator ”是芯片全功能模拟仿真,即无需任何目标系统的硬件资源,直接在你的PC 机上模拟运行单片机的程序,在模拟运行过程中可以观察调试程序的各项控制和运行流程,分析代码运行的时间,观察各种变量,等等。

飞思卡尔单片机编程共19页word资料

飞思卡尔单片机编程共19页word资料

关于Codewarrior 中的 .prm 文件网上广泛流传的一篇文章讲述的是8位飞思卡尔单片机的内存映射,这几天,研究了一下Codewarrior 5.0 prm文件,基于16位单片机MC9S12XS128,一点心得,和大家分享。

有什么错误请指正。

正文:关于Codewarrior 中的.prm 文件要讨论单片机的地址映射,就必须要接触.prm文件,本篇的讨论基于Codewarrior 5.0 编译器,单片机采用MC9S12XS128。

通过项目模板建立的新项目中都有一个名字为“project.prm”的文件,位于ProjectSettings->Linker Files文件夹下。

一个标准的基于XS128的.prm文件起始内容如下:.prm文件范例:NAMESENDSEGMENTSRAM = READ_WRITE DATA_NEAR 0x2000 TO 0x3FFF;ROM_4000 = READ_ONLY DATA_NEAR IBCC_NEAR 0x4000 TO 0x7FFF;ROM_C000 =READ_ONLY DATA_NEAR IBCC_NEAR 0xC000 TO 0xFEFF;//OSVECTORS = READ_ONLY 0xFF10 TO 0xFFFF;READ_ONLY DATA_FAR IBCC_FAR 0x000800 TO 0x000BFF;EEPROM_01 =READ_ONLY DATA_FAR IBCC_FAR 0x010800 TO 0x010BFF;EEPROM_02 =READ_ONLY DATA_FAR IBCC_FAR 0x020800 TO 0x020BFF;EEPROM_03 =READ_ONLY DATA_FAR IBCC_FAR 0x030800 TO 0x030BFF;EEPROM_04 =READ_ONLY DATA_FAR IBCC_FAR 0x040800 TO 0x040BFF;EEPROM_05 =READ_ONLY DATA_FAR IBCC_FAR 0x050800 TO 0x050BFF;EEPROM_06 =READ_ONLY DATA_FAR IBCC_FAR 0x060800 TO 0x060BFF;EEPROM_07 =READ_ONLY DATA_FAR IBCC_FAR 0x070800 TO 0x070BFF;PAGE_F8 =READ_ONLY DATA_FAR IBCC_FAR 0xF88000 TO 0xF8BFFF;PAGE_F9 =READ_ONLY DATA_FAR IBCC_FAR 0xF98000 TO 0xF9BFFF;PAGE_FA =READ_ONLY DATA_FAR IBCC_FAR 0xFA8000 TO 0xFABFFF;READ_ONLY DATA_FAR IBCC_FAR 0xFB8000 TO 0xFBBFFF;PAGE_FC =READ_ONLY DATA_FAR IBCC_FAR 0xFC8000 TO 0xFCBFFF;PAGE_FE =READ_ONLY DATA_FAR IBCC_FAR 0xFE8000 TO 0xFEBFFF;ENDPLACEMENT_PRESTART,STARTUP,ROM_VAR,STRINGS,VIRTUAL_TABLE_SEGMENT,//.ostext,DEFAULT_ROM, NON_BANKED,COPYINTO ROM_C000 ;OTHER_ROM INTO PAGE_FE, PAGE_FC, PAGE_FB, PAGE_FA, PAGE_F9, PAGE_F8;//.stackstart,SSTACK,//.stackend,PAGED_RAM,DEFAULT_RAMINTO RAM;DISTRIBUTE DISTRIBUTE_INTOROM_4000, PAGE_FE, PAGE_FC, PAGE_FB, PAGE_FA, PAGE_F9, PAGE_F8;CONST_DISTRIBUTE DISTRIBUTE_INTOROM_4000, PAGE_FE, PAGE_FC, PAGE_FB, PAGE_FA, PAGE_F9, PAGE_F8;DATA_DISTRIBUTE DISTRIBUTE_INTORAM;//.vectors INTO OSVECTORS;ENDENTRIES//_vectab OsBuildNumber _OsOrtiStackStart _OsOrtiStartENDSTACKSIZE 0x100VECTOR 0 _Startup//VECTOR 0 Entry//INIT Entry1 .prm文件组成结构按所含的信息的不同.prm文件有六个组成部分构成,这里仅讨论和内存空间映射关系紧密的三个部分,其他的不做讨论。

飞思卡尔单片机的程序

飞思卡尔单片机的程序

#include "derivative.h"//-----------------------------------------------------static void SCI_Init(void){SCI0CR2=0x2c; //enable Receive Full Interrupt,RX enable,Tx enableSCI0BDH=0x00; //busclk 8MHz,19200bps,SCI0BDL=0x1aSCI0BDL=0x68; //SCI0BDL=busclk/(16*SCI0BDL)//busclk 8MHz, 9600bps,SCI0BDL=0x34//busclk 8MHz, 9600bps,SCI0BDL=0x68//busclk 24MHz, 9600bps,SCI0BDL=0x9C} //busclk 32MHz, 9600bps,SCI0BDL=0xD0//busclk 40MHz, 9600bps,SCI0BD =0x104//-----------------------------------------------------static void Port_Init(void){DDRA = 0xff; //LCD1100,PA0--4,PA67 D1D2PORTA= 0x00;DDRB = 0xff; //LED PTB0--7,PORTB= 0xff; //LEDs onDDRE = 0xFF; //MOTOR CONTROLPORTE= 0x00; //PDDRH = 0x00; // PORTH inputPTIH = 0X00; // KEY,PH0--5PERH = 0xff; // PORTH pull upPPSH = 0x00; // Port H Polarity Select Register-falling edgePIEH = 0x02; // PORTH interrut disable but 1,DDRJ = 0X01; // PJ0判断行同步脉冲到达//PPSJ = 0x01; // Port J Polarity Select Register-rising EDGEPPSJ = 0x00; // Port J Polarity Select Register-falling EDGEPIEJ = 0X00; // VIDEO SYNC INTERRUPT DISABLED,BUT NOT IN MAIN() PERJ = 0xff;DDRP = 0xff;PERP = 0xff;PTP_PTP0 = 0;}//-----------------------------------------------------static void PWM_Init(void){//SB,B for ch2367//SA,A for ch0145PWMPRCLK = 0X55; //clockA,CLK B 32分频:500khzPWMSCLA = 0x02; //对clock SA 进行2*PWMSCLA=4分频;pwm clock=clockA/4=125KHz;PWMSCLB = 0X02; //clk SB=clk B/(2*pwmsclb)=125KHZ//pwm1PWMCNT1 = 0;PWMCAE_CAE1=0;PWMPOL_PPOL1=0;PWMPER1 =125;PWMDTY1 =100;PWMCLK_PCLK1 = 1;PWME_PWME1 = 0;}void AD_Init(void){A TD0CTL1=0x00; //7:1-外部触发,65:00-8位精度,4:放电,3210:chA TD0CTL2=0x40; //禁止外部触发, 中断禁止A TD0CTL3=0xa0; //右对齐无符号,每次转换4个序列, No FIFO, Freeze模式下继续转A TD0CTL4=0x01; //765:采样时间为4个AD时钟周期,ATDClock=[BusClock*0.5]/[PRS+1]A TD0CTL5=0x30; //6:0特殊通道禁止,5:1连续转换,4:1多通道轮流采样A TD0DIEN=0x00; //禁止数字输入}//-----------------------------------------------------//IOC7/PT7用于计算CS3144产生的脉冲数static void IOC_Init(void){TCTL3=0xc0;//c-输入捕捉7任何沿有效,TCTL4=0xc0;//40表示ICx禁止, 1表示上升沿, 2表示下降沿, 3表示任何沿TIE =0x00;//每一位对应相应通道中断允许,0表示禁止中断TIOS =0x00;//每一位对应通道的: 0输入捕捉,1输出比较TCTL3_EDG7x=1;//c-输入捕捉7任何沿有效,}//产生40ms的定式中断,读取IOC7的计数值static void Timer_Init(void){//TSCR1=0X80;//TIMER INT ENABLED//TSCR1=0x90;//计数器使能TEN|快速清零TFFCATSCR1=0X00; //禁止TIM//TSCR2=0X80;//DIV 1->2.5ms,enable time overflow interrrupt//TSCR2=0X82;//DIV 4->10ms//TSCR2=0X83;//DIV 8->20ms//TSCR2=0X84;//DIV 16->40msTSCR2=0X85;//DIV 32->80ms//TSCR2=0X86;//DIV 64->160ms//TSCR2=0X87;//DIV 128->320ms,enable time overflow interrruptTCNT =0; //PACTL=0X50; //PT7 PIN,PACN32 16BIT,FALLing edge,NOT INTERRUPT //PBCTL=0X40;//PBCN10 16BIT,INT DISABLED//ICPAR=0; //8BIT DISABLED}//-----------------------------------------------------// setup of the RTI interrupt frequencystatic void RTI_Init(void){//RTICTL=0x10; //2^10x40ms=4.96s//RTICTL=0X74; //SET PRESCALER,div rate=(m+1)x2^(n+9),(m=1-7,n=0-15)//tick=16Mhz/((4+1)x2^(7+9))=48.83,(/sec)//16000000/64k=244.140625 ,与晶振频率相关,与分频无关RTICTL=0x77; //8x2^16 =>32,75ms,30.5175Hz//RTICTL=0x7f; //16x2^16 =>,65.536ms,15.26Hz//RTICTL=0x1F; //16x2^10--1ms//CRGINT=0X80; //enable RTI InterruptCRGINT=0X00; //disable RTI Interrupt}static void Time_Start(void){RTI_Init();CRGINT=0X80; //enable RTI Interrupt}//-----------------------------------------------------// PLL初始化子程序BUS Clock=16Mvoid setbusclock(void){CLKSEL=0X00; // disengage PLL to systemPLLCTL_PLLON=1; // turn on PLLSYNR=0x00 | 0x01; // VCOFRQ[7:6];SYNDIV[5:0]// fVCO= 2*fOSC*(SYNDIV + 1)/(REFDIV + 1)// fPLL= fVCO/(2 × POSTDIV)// fBUS= fPLL/2// VCOCLK Frequency Ranges VCOFRQ[7:6]// 32MHz <= fVCO <= 48MHz 00// 48MHz < fVCO <= 80MHz 01// Reserved 10// 80MHz < fVCO <= 120MHz 11REFDV=0x80 | 0x01; // REFFRQ[7:6];REFDIV[5:0]// fREF=fOSC/(REFDIV + 1)// REFCLK Frequency Ranges REFFRQ[7:6]// 1MHz <= fREF <= 2MHz 00// 2MHz < fREF <= 6MHz 01// 6MHz < fREF <= 12MHz 10// fREF > 12MHz 11// pllclock=2*osc*(1+SYNR)/(1+REFDV)=32MHz;POSTDIV=0x00; // 4:0, fPLL= fVCO/(2xPOSTDIV)// If POSTDIV = $00 then fPLL is identical to fVCO (divide by one)._asm(nop); // BUS CLOCK=16M_asm(nop);while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it;CLKSEL_PLLSEL =1; //engage PLL to system;}//-----------------------------------------------------#pragma CODE_SEG DEFAULTvoid Init_Dev(void){setbusclock();Port_Init();SCI_Init();PWM_Init();AD_Init();Timer_Init();Time_Start();IOC_Init();}//-----------------------------------------------------。

飞思卡尔eTPU中文使用说明(书签版)

飞思卡尔eTPU中文使用说明(书签版)

>= Comparator >= 23 Comparator >= 捕获寄存器1 Comparator Comparator Comparator 23 捕获寄存器2
设置匹配和转型事件是在微 一个匹配同步两个24位自由运行定时器计数寄存器,TCR1或TCR2 同步捕获到的两个24位自由运行定时器计数寄存器,TCR1或TCR2.
15 15
CH0
0 0 0 0 0 0
输入输出引脚 CH31 CH0
TCR1视程
TCR2
0
TB2R
23
TCR2视程
0
23 匹配寄存器2 Compare/Match Register Capture Register Compare/Match Register Capture Register Compare/Match Register Compare/Match Register Compare/Match Register 23 比较器1 Compare/Match Register Compare/Match Register Compare/Match Register >= Compare/Match Register >= >= 23 比较器2 Comparator >= Comparator >= Comparator >= Comparator
页8
Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005

飞思卡尔单片机教程

飞思卡尔单片机教程

注 : A/D模块的时钟频率要在500KHz和2MHz之间, 所以在选择分频因子时一定要注意。
采样时间选择
SMP [1 :0]
采样时间
00
2个 A/D时钟周期
01
4个A/D时钟周期
ATDclock= ( (BusClock) / (PRS+1) ) /2
10
8个A/D时钟周期
11
16个A/D时钟周期
设CCBCA = 000,转换序列从通道
0开始;ATD0DR0,
ATD0DR1,ATD0DR2存放转换结果
设CCBCA = 0 10,转换序列从通道 2开始。 仍然是ATD0DR0,
ATD0DR1,ATD0DR2存放转换结果
S8C 、S4C 、S2C 、S1C:定义转换队列的长度 。默认长度为4。 FIFO: 结果寄存器先进先出模式 。1=FIFO模式 ,转换结果是连续 存放的;0=非FIFO模式 ,转换结果放在对应的寄存器中。 FRZ1、FRZ0:背景调试冻结模式允许 。这两个控制位就决定了,
{ while (ATD1STAT0_SCF ==0) ;
ad_value [0] = ATD1DR0; ad_value [4] = ATD1DR4;//使用 PORTB= (byte) ad_value [4] ;
}}
void ATDInit(void)
{ATD1CTL2=0xC0;//AD模块上电,快速清零,无等待模式,禁止外部触发, 中断禁止 // ADPU AFFC AWAI ETRIGLE --- ETRIGP ETRIGE ASCIE ASCIF
PRS=3
ATD1CTL5=0xA4; //右对齐无符号 ,单通道采样 ,通道0

飞思卡尔HCS08--第07章_08C语言

飞思卡尔HCS08--第07章_08C语言

7.2 标准C语言的基本语法
7.2.2 运算符
C语言的运算符与大多数计算机语言基本相同,分为:

算术运算符 逻辑运算符 关系运算符和位运算符 增量和减量运算符


复合赋值运算符
指针和地址运算符 输出格式转换符
7.2 标准C语言的基本语法
7.2.3 流程控制
(1)顺序结构
顺序结构就是从前向后依次执 行语句。从整体上看,所有程序的 基本结构都是顺序结构,中间的某 个过程可以是选择结构或循环结构。
7.2 标准C语言的基本语法
7.2.8 用typedef定义类型
typedef用来定义新的类型名来代替已有的类型名: typedef 类型名 新的类型名;
说明: ① 用typedef可以定义各种类型名,但不能用来定义变量。 ② 用typedef只是对已经存在的类型增加一个类型名,而没有 创造新的类型。 ③ 当不同源文件中用到各种类型数据(尤其是像数组、指针、 结构体、共用体等较复杂数据类型)时,常用typedef定义一些数据 类型,并把它们单独存放在一个文件中,而后在需要用到它们的文 件中用#include命令把它们包含进来。
③ 新建main.c程序
(2)编译程序
返回
7.4 08C语言程序编程框架
7.5 08C语言的编译过程
7.5.1 编译过程
在SD-HC08在线编程开发系统中编辑了源程序以后,使用编译命令就可 以把源程序翻译成目标程序。
① 编译的脚本文件:包含了编译指令及相关的参数,文件存放的位置 在.prj的同一文件夹下。
7.5 08C语言的编译过程
7.5.2 编译文件输出
单片机的文件都有自己的后缀规则,不同的C编译器产生的文 件后缀在某些方面有些差异。下表为08C编译过程中产生的文件类 型。

飞思卡尔s12单片机-用C语言开发应用程序

飞思卡尔s12单片机-用C语言开发应用程序

交叉编译:是指在一台大一些、 交叉编译:是指在一台大一些、
生目标系统的机器码。 生目标系统的机器码。目标系统 计算机的CPU类型完全不同。 类型完全不同。 计算机的 类型完全不同
第七章 用C语言开发应用程序 语言开发应用程序 —编辑、编译、链接、定位 编辑、编译、链接、
*.h *.c *.c++ C源文件 源文件 汇编源文件
2、避免使用浮点数和双精度 、 3、C语言数据类型的位宽取决于单片机的类型和具体的 语言数据类型的位宽取决于单片机的类型和具体的IDE中的约定; 中的约定; 、 语言数据类型的位宽取决于单片机的类型和具体的 中的约定 中工程窗口中的“ 标签下“ 如codewarrior中工程窗口中的“target”标签下“standard”对话框中 中工程窗口中的 标签下 对话框中 “complier for”中 “Type sizes”按钮对应的对话框 中 按钮对应的对话框 Page 6
Page 8
第七章 用C语言开发应用程序 语言开发应用程序 ———运行环境 运行环境
7.3 建立 语言程序运行环境 建立C语言程序运行环境
C语言的主程序从main()开始的,必须为main() 建立一个程序运行环境, 主要完成四件事情: 1、设置栈指针初值 2、相关硬件的系统初始化 3、调用函数main() 使之执行 4、给出main() 完成后的出口,即执行exit()。
*.asm *.inc
链接配 置文件
*.prm
C编译器 汇编编译器
列表文件
目标文件
*.obj
库文件
*.lst 反 编 译 器
链接器 *.sx 执行文件 *.abs
汇编 反编译文件
映射文件
*.map

飞思卡尔MC9S12C中文介绍以及简单编程编程

飞思卡尔MC9S12C中文介绍以及简单编程编程

C64 64K / 64k* 4K - 16MHz (25MHz option) 1 1 - 3-5V 31 - 60 1 8-ch 10-bit 48 / 52 / 80 C32 32K / 32K* 2K - 16MHz (25MHz option) 1 1 - 3-5V 31 - 60 1 8-ch 10-bit 48 / 52 / 80 GC32 32K 2K - 16MHz (25MHz option) 1 1 - 3-5V 31 - 60 0 8-ch 10-bit 48 / 52 / 80 GC16 16K 2K - 16MHz (25MHz option) 1 1 - 3-5V 31 - 60 0 8-ch 10-bit 48 / 52 / 80 TM Freescale Semiconductor Confidential and Proprietary Information. Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005. Slide 5 S12 C-系列更新… –市场表现出色,给人崭新印象的入门级 C-系列… –16 位的性能 8 位的价格 –弥补 S12 在$2.00 以下的缺憾 –3-5V 工作电压 – 封装从小型的 48 QFP (7x7mm) 到标准的 80 QFP (与 S12D & B 兼容) – 9S12C64/96/128 已经通过质量测试 –*ROM 系列 (所有 CAN 版本) 将使 S12 入门级更低 – ROM Production targeted for 3Q05 (all versions). Exact schedule TBD. – 不带 CAN 的 9S12GC16/32/64/128 量产,价格更低!与 C32/64/96 管脚兼容 应用范围: 车身控制,ABS,EPS,座椅控制,空调 TM Freescale Semiconductor Confidential and Proprietary Information. Freescale™ and the Freescale logo are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005. Slide 6 MC9S12Q 系列 Part No Flash ROM RAM CAN SCI SPI TIMER ADC PWM Package S12Q128 128k - 4k 1 1 1 6ch 16 bit 8ch 10bit 4 Ch 80, 52, 48 QFP S12Q96 96k - 3k 1 1 1 6ch 16 bit 8ch 10bit 4 Ch 80, 52, 48 QFP S12Q64 64k - 2k 1 1 1 6ch 16 bit 8ch 10bit - 52, 48 QFP S12Q32 32k - 1k 1 1 1 6ch 16 bit 8ch 10bit - 52, 48 QFP S12Q128 - 128k 4k 1 1 1 6ch 16 bit 8ch 10bit 4 Ch 80, 52, 48 QFP S12Q96 - 96k 3k 1 1 1 6ch 16 bit 8ch 10bit 4 Ch 80, 52, 48 QFP S12Q64 - 64k 2k 1 1 1 6ch 16 bit 8ch 10bit - 52, 48 QFP S12Q32 - 32k 1k 1 1 1 6ch 16 bit 8ch 10bit - 52, 48 QFP Q Family Q Family MCU’s MCU’s 特点/优点: •低成本 •基于 S12C-系列 •增强型 msCAN 12 •增强型 SCI 用于 LIN • SPI • 8 or 16 MHz Up to 4K RAM Up to 4K RAM Up to 128K Up to 128K FLASH/ROM FLASH/ROM

飞思卡尔单片机入门

飞思卡尔单片机入门

KV31 Cortex M4
VOC BLDC & PMSM Motors with High Dynamic Control
100 MHz
KV30 – Cortex M4
75 MHz
KV1x – CM0+
VOC BLDC & Low End PMSM motors with Low Dynamic Control 64KB 128KB 256KB 512KB
Deep Dive on New Kinetis KV1x MCU for Motor Control
FTF-IND-F0473
Eric Wu | Product Marketing, Microcontrollers William Jiang | Application, Microcontrollers
M A Y. 2 0 1 4
TM
External Use
Agenda

Kinetis V Series MCU Overview • Deep Dive on KV1x • Tower Board and Demos
TM
External Use
1
Kinetis V Series MCU Overview
KV3x Family
Mid range PMSM, UPS power control
+ Multi Channel Timers + Floating Point Unit
2014
KV1x Family
BLDC, entry level PMSM
+ Motor Control Software
Feature Integration

飞思卡尔单片机烧写程序方法(量产)

飞思卡尔单片机烧写程序方法(量产)

飞思卡尔单片机烧写程序方法
车间批量生产的时候,不能把源程序给他们,只给一个烧录文件给他们烧写程序的方法,即脱离工程源文件烧写芯片程序。

一、确定待烧写的文件目录:
需要烧写的文件为abs后缀的文件
二、烧写软件
在CW v5.9的安装目录下面的“prog”文件夹里边有一个hiwave.exe(如需要拷贝出来使用,则需要整体拷贝“prog”文件夹,否则不能用)
插好P&E下载器,双击hiwave.exe,打开后就是debugger的界面:
然后在菜单“component”的“set connection”中选择芯片类型和连接方式:
点击“OK”,然后会弹出一个窗口去选择片子型号(如果没有弹出,也可以从第四个菜单(HC12MultilinkCyclonePro)中点击Select derivative去选择片子型号):
选择完成后,点击“OK”,这个hiwave.exe会和芯片建立连接;
然后从菜单“file”中点击“load Application”选择对应的abs文件:
(上图中擦除Flash和EEPROM,以及Run after successful load项的设置,可以在双击
hiwave.exe,打开debugger界面的“File”---->“Configuration”----->“Load”下设置,这样每次下载时,就不需要再次设置该项目了。


点击上图中“打开”,出现擦除确认提示框,
(如勾选上图下面的框,下次下载时就不会出现该提示了)点击“OK”,即可烧写入程序。

飞思卡尔单片机教学

飞思卡尔单片机教学

串联方式(PE7引脚要拉低)
并联方式(PE7引脚要拉高)
a
29 29
第3章 MC9S12单片机的内核及片上资源
时钟初始化寄存器-共5个
(1)锁相环控制寄存器(PLLCTL)
时钟监控允许位 1=允许 0=禁止
锁相环电路允许位 1=允许 0=禁止
注:其余各位的描述见教材49页。
a
30 30
第3章 MC9S12单片机的内核及片上资源
注:其余各位的描述
见教材49页和50页。
a
32 32
第3章 MC9S12单片机的内核及片上资源
PLL例子
CLKSEL=0x00; //禁止PLL PLLCTL=0xe1; //PLL电路允许 SYNR=2;REFDV=1; //设置倍频参数 PLLCTL=0x60; //时钟监控禁止 while(0==(CRGFLG&0x08));//等待稳定 CLKSEL=0x80; //选择PLL作为时钟 //若晶振为16M,则PLLCLK=2*16*3/2=48MHz,则总线频率是
R/W:读写信号,指示总线上数据方向 LSTRB:总线模式下低位字节(奇地址)选通 ECLK:内部总线时钟输出,一般在宽扩展模式下地址锁存用 BKGD(MODC)、MODB、MODA:模式选择 NOACC/XCLKS:当前外部总线操作无效
a
55
第3章 MC9S12单片机的内核及片上资源
模式选择
a
66
Block3
$C000~$FF00 16K($3F) Block2 Block1 Block0
16KB
$30 $31 $32 $33 $34 $35 $36 $37 $38 $39 $3A $3B $3C $3D $3E $3F

(整理)飞思卡尔8位单片机MC9S0813程序LCD编程C语言程序例

(整理)飞思卡尔8位单片机MC9S0813程序LCD编程C语言程序例
}
(2)主函数
实例编号:C07路径:\C\C07_液晶LCD显示(Lcd.prj)
/*-----------------------------------------------------*
*工程名:Lcd.prj *
*硬件连接: 1.LCD的DB0-7与MCU的B口的PTB0-7连接*
* 2.LCD的RS,R/W,E与MCU的PTC0,PTC1,PTC2连接*
//内部调用子程序
void Lcd_Command(unsigned char cmd); //命令执行子程序
void LcdInit(void); //Lcd初始化子程序
/*LcdShow:在HD44780显示屏上显示数据--------------------*
*功能描述:在HD44780显示屏上显示str中的32个数据*
*-------------《嵌入式应用技术基础教程》--------------*/
//[以下为子程序源代码]
//[头文件]
#include "GP32C.h" //包含头文件
#define LcdData PTB //Lcd显示数据传送口
#define LcdData_D DDRB //数据口方向寄存器
*参数:cmd:待执行的命令*
*返回:无*
*-----------------------------------------------------*/
void Lcd_Command(unsigned char cmd)
{
unsigned char i;
for (i=0;i<20;i++); //等待>40us
void main(void)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

TM
DHJK 03-Feb-05
•Lab 1: Use of CodeWarrior(CodeWarrior的使用) •Lab 2: Interrupts(中断) •Lab 3: Data Segment(数据段的定义) •Lab 4: Constant Segment(常量数据段) •Lab 5: Variables(变量) •Lab 6: Bit Fields(位操作) •Lab 7: Arrays(数组) •Lab 8: Pointers(指针) •Lab 9: Arguments(函数内的自变量) •Lab 10: Optimize 1(优化方法1) •Lab 11: Optimize 2(优化方法2) •Lab 12: Optimize 3(优化方法3) •Lab 13: Optimize 4(优化方法4) •Lab 14: Manual Optimization(手工优化) •Lab 15: Processor Expert(处理器专家)
or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.
2
Lab 1 Step 1 –创建工程
•开始菜单 -> 程序 -> Freescale
Codewarrior -> CW08 V5.0 -> Codewarrior IDE
栈)放置在零页地址空间 内,数据指针定义为8bit
•Small mode-数据指针为
16bit, 数据放置在非零页
空间
TM
Freescale™ and the Freescale logo aretrademarks of Freescale Semiconductor, Inc. All other product
4
Lab 1 Step 1 –创建工程
•选择None-不使用模板,自
己手工编写程序 。
•“Device Initialization”提供器
件初始化程序,包括中断向 量和中断服务子程序模板
•“Processor Expert”处理器
专家:通过友好的图形用户 界面,生成初始化程序 ,还 可生成外围器件的驱动程序 等。
TM
DHJK 03-Feb-05
Lab1
•目的: 熟悉CodeWarrior开发环境,理解如何创建和调
试一个工程
•中文网页:
/CodeWarrior/CWXH08-SE_Overview.asp
TM
Freescale™ and the Freescale logo aretrademarks of Freescale Semiconductor, Inc. All other product
or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.
Lab 1 Step 1-创建工程
•这一步可以将已有的文件加入到新工程中去 •本实验忽略该步骤,直接点击 Next
Lab 1 Step 1 –创建工程
•ANSI startup code -标准
启动代码
•Minimal startup code -精
简的启动代码,去掉了不 必要的代码
•选择 ‘ANSI’标准启动代码
•选择 ‘small’模式 •不采用浮点运算格式 None •完成后点击Finish
•Tiny mode-数据(包括堆
TM
Freescale™ and the Freescale logo aretrademarks of Freescale Semiconductor, Inc. All other product
or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.
or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.
Lab 1 Step 1 –创建工程
•选择编程语言-C
•设置工程存放的路径, 给工程命名,例如“CreateProject” •点击Next按钮
7
Lab 1 Step 2 –浏览设置
•选定Option按钮可
以得到各种设置选 项:
例如:Output一栏, 在Generate Listing File选项上打钩, 可以在链接后得到 list文件。
TM
Freescale™ and the Freescale logo aretrademarks of Freescale Semiconductor, Inc. All other product
内容
1
Lab 1-CodeWarrior的使用
Freescale™ and the Freescale logo aretrademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.
3
Lab 1 Step 1 –创建工程
•选择目标器件– MC9S08QG8 •用默认连接方式–Full chip simulation(软件仿真)
§ P&E Multห้องสมุดไป่ตู้link/Cyclone Pro–连接P&E BDM Multilink,注释框内有解释
•点击Next 继续
TM
Freescale™ and the Freescale logo aretrademarks of Freescale Semiconductor, Inc. All other product
指南,包括C语言、汇编语言、 Processor Expert等
•“Using Codewarrior”不作任何操作,
用户自行使用
TM
Freescale™ and the Freescale logo aretrademarks of Freescale Semiconductor, Inc. All other product
Lab 1 Step 2 –浏览设置
工程 连接 器件 目标 同步 编译 仿真
文件名 选项 选择 设置 时间 链接 调试 •器件选择(Change MCU) -可以在工程
创建完成以后重新选定器件的型号
•目标设置(Target Setting)-用于某一
应用的一组规则和设定
•同步时间 (synchronize) -同步工程中所
or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.
5
菜单栏 快捷键 工程窗口
Lab 1 Step 1 -创建工程
•创建过程完成 •进入IDE开发
环境
TM
•改成libmaker可以把整个工程做
成库(需 要license)
TM
Freescale™ and the Freescale logo aretrademarks of Freescale Semiconductor, Inc. All other product
or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.
TM
Freescale™ and the Freescale logo aretrademarks of Freescale Semiconductor, Inc. All other product
or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.
Lab 1 Step 2 –浏览设置
•以Compiler for HC08
为例,看 Target Setting
•选择Message按钮 ,
可以看到归类 (Disable, Information, Warning, Error, Fatal) 的各种编译器信息。 某些信息的类别可以 由用户自行调整 。
TM
Freescale™ and the Freescale logo aretrademarks of Freescale Semiconductor, Inc. All other product
or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.
TM
Freescale™ and the Freescale logo aretrademarks of Freescale Semiconductor, Inc. All other product
or service names are the property of their respective owners. © Freescale Semiconductor, Inc. 2005.
相关文档
最新文档