资源预览内容
第1页 / 共95页
第2页 / 共95页
第3页 / 共95页
第4页 / 共95页
第5页 / 共95页
第6页 / 共95页
第7页 / 共95页
第8页 / 共95页
第9页 / 共95页
第10页 / 共95页
亲,该文档总共95页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
ZZTI郑郑州州飞思卡尔智能车_单片机篇1ZZTI郑郑州州飞思卡尔单片机8位单片机51,宏晶,C8051,AVR16位单片机飞思卡尔9S12XS128,ARM,430,DSP2000最小系统板BDM调试器2ZZTI郑郑州州飞思卡尔单片机MC9S12sx128:16位单片机系统时钟:晶振16M,总线时钟可到80M模块时钟:可对系统时钟分频功能及模块IO端口PWMECTPITATDSCI3ZZTI郑郑州州端口控制概述A、B:通用IOE:AD:ATD模块KT:TIM模块P:PWM模块S:SCI模块MJH复位后端口为IO口输入,子系统使能后,自动变更为专用功能口。端口作用:IO(输入,输出),功能口4ZZTI郑郑州州管脚图5ZZTI郑郑州州单片机端口配置6ZZTI郑郑州州最小系统管脚接线图7ZZTI郑郑州州引脚8ZZTI郑郑州州常用引脚9ZZTI郑郑州州背面焊接10ZZTI郑郑州州IO口设置概述PORTA,PORTB做IO,T,P,AD功能不变AB口IO设置输入输出: (1位对应一个端口)方向寄存器A口- DDRA, B口- DDRB0输入,1输出输出时的驱动能力(1位对应一组端口)A口-RDRIV0; B口-RDRIV1;1全额驱动能力,0缩减(全额/3)驱动能力上拉电阻控制 (1位对应一组端口)A口-PUCR0;B口-PUCR1;1使用,0不使用11ZZTI郑郑州州端口的位访问PORTADDRAPORTBDDRBPA7PA6PA5PA4PA3PA2PA1PA076543210DDRA7 DDRA6 DDRA5 DDRA4 DDRA3 DDRA2 DDRA1 DDRA076543210PB7PB6PB5PB4PB3PB2PB1PB076543210DDRB7 DDRB6 DDRB5 DDRB4 DDRB3 DDRB2 DDRB1 DDRB076543210位访问方法:例PORTA_PA012ZZTI郑郑州州第一个练习点亮一盏灯PB3口输出DDRB=0x0f; 亮灯:PORTB=0x00;复位高电平13ZZTI郑郑州州飞思卡尔单片机使用官网:飞思卡尔半导体http:/www.freescale.com.cn/开发工具 CodeWarrior下载:CW_S12_v5.0_Special(3).exe安装:-BDM调试器安装驱动:USBDMreleasedriver首创科技光盘资料首创科技光盘资料14ZZTI郑郑州州最小系统板使用电路板电源系统板及插座电阻,LED15ZZTI郑郑州州操作过程运行程序16ZZTI郑郑州州17ZZTI郑郑州州18ZZTI郑郑州州19ZZTI郑郑州州CodeWarrior20ZZTI郑郑州州写程序、编译、连接、下载21ZZTI郑郑州州22ZZTI郑郑州州程序调试界面23ZZTI郑郑州州效果图24ZZTI郑郑州州单片机时钟25ZZTI郑郑州州总线时钟频率总线时钟:可编程改变(一般最大80M)时钟合成寄存器SYNR低4位时钟分频寄存器REFDV低4位PLLCLK=2*OSCCLK*(1+SYNR)/(1+REFDV) BUSCLK=PLLCLK/2 26ZZTI郑郑州州SYNR与REFDIV高位FVCO=2*FOSC*(SYN+1)/(REF+1)SYNR =0xc0 | 0x04; FREF=FOSC/(REFDIV + 1)REFDV=0x80 | 0x01;FVCO32-48M48-80M保留80-120MSYNR7-40x000x400x800xC0FREF1-2M2-6M6-12M12MREFDIV7-40x000x400x800xC027ZZTI郑郑州州时钟设置典型程序1/ 24M主频CLKSEL_PLLSEL=0; /系统时钟=晶振/2PLLCTL_PLLON=1; /允许锁相环SYNR =0x40 | 0x02; REFDV=0x80 | 0x01;POSTDIV=0x00; _asm(nop); _asm(nop);while(!(CRGFLG_LOCK=1);/等待系统稳定CLKSEL_PLLSEL =1; /系统时钟=PLLCLK/228ZZTI郑郑州州时钟设置典型程序2/ 80M主频CLKSEL_PLLSEL=0; /系统时钟=晶振/2PLLCTL_PLLON=1; /允许锁相环SYNR =0xc0 | 0x09; REFDV=0x80 | 0x01;POSTDIV=0x00; _asm(nop); _asm(nop);while(!(CRGFLG_LOCK=1);/等待系统稳定CLKSEL_PLLSEL =1; /系统时钟=PLLCLK/229ZZTI郑郑州州PWM模块作用:硬件方法产生PWM,控制电机U030ZZTI郑郑州州PWM产生原理计数器周期比较值原理:当计数器值=比较值时,电平翻转连续增计数方式连续增减计数方式计数值比较值0周期31ZZTI郑郑州州PWM产生起始电平:高计数值比较值0周期PWM32ZZTI郑郑州州PWM产生原理起始电平:低计数值比较值0周期PWM33ZZTI郑郑州州PWM模块8路PWM8位34ZZTI郑郑州州PWM寄存器设置PWM允许:1允许,0禁止极性:0起始低,1起始高居中对齐:0左对齐,1居中对齐周期寄存器PWMPERx :8位比较值寄存器PWMDTYx : 8位35ZZTI郑郑州州PWM时钟时钟选择CLOCKA/B:对总线时钟分频36ZZTI郑郑州州PWM时钟SA与SB由CLOCK A/B分频得到37ZZTI郑郑州州PWM模块级联级联4路PWM16位38ZZTI郑郑州州PWM级联CONxy=1,表示xy级联,组成16位PWM01,23,45,67级联PWM允许,极性,居中对齐寄存器,PWM输出分别继承1,3,5,7周期寄存器PWMPERxy :16位比较值寄存器PWMDTYxy :16位39ZZTI郑郑州州PWM寄存器40ZZTI郑郑州州练习利用1个8位PWM通道,左对齐方式,起始高电平,产生一个频率=10kHz,占空比=1/4的PWM波形。计算:周期=24000000/10000=2400超过8位,分频:2400/256=9.4,16分频周期=2400/16=150比较值:150/4=37T=100us41ZZTI郑郑州州寄存器设置PP0通道: PWME _PWME0=1左对齐: PWMCAE_CAE0=0;极性起始高电平: PWMPOL _PPOL0=1;时钟选择: PWMCLK _PCLK0=0,CLKAA分频1/16:PWMPRCLK _PCKA=4周期:PWMPER0=150比较值:PWMDTY0=3742ZZTI郑郑州州程序PWME=1;/PP0通道:PWMCAE=0;/左对齐:PWMPOL=0;/极性起始高电平:PWMCLK=0;/时钟选择,CLKAPWMPRCLK=0x04;/A分频1/16:PWMPER0=150;/周期:PWMDTY0=37;/比较值:两种寄存器设置方法两种寄存器设置方法所有寄存器定义可查所有寄存器定义可查 MC9S12XS128.H继续练习:使用级联PWM生成PWM波形,50Hz43ZZTI郑郑州州单片机中断void mian()初始化For(;)后台程序。中断程序中断程序1中断程序2中断程序3特定事件1 特定事件2 特定事件3开中断清中断标记特定事件发生Void interrupt 中断号 程序名() 。44ZZTI郑郑州州45ZZTI郑郑州州中断程序定位 一般情况下,中断程序必须定位于non-banked区域,通过使用#pragma CODE_SEG NON_BANKED可以把中断程序定位于non-banked区域,同时你必须确保sectionNON_BANKED不能出现在.prm文件中。在中断程序的末尾,你需要添加#pragma CODE_SEG DEFAULT,否则的话,后面的函数也会被定位在non-banked区域。也即,中断服务程序必须被#pragma CODE_SEG NON_BANKED与#pragma CODE_SEG DEFAULT包围。#pragma CODE_SEG NON_BANKEDvoid interrupt 中断号 中断程序名() 中断程序代码#pragma CODE_SEG DEFAULT46ZZTI郑郑州州TIM模块ECT模块输入捕捉比较输出16位脉冲累加器参考:http:/wenku.baidu.com/view/7312f7fd700abb68a982fb17.html47ZZTI郑郑州州TIM时钟和定时器时钟分频定时器使能0停止1使能计数器TCNT原理使能后从0-0xFFFF-0-0xFFFF循环计数48ZZTI郑郑州州TIM时钟和定时器当PRTN=1,定时器由PTPSR精密分频49ZZTI郑郑州州TIM输入捕捉IC捕捉跳变沿,跳变时刻装入寄存器通道功能选择0输入捕捉1输出比较边沿设置8组跳变时刻保存TC0-TC750ZZTI郑郑州州TIM输出比较OC输出比较设定一个值16,当计数器值=该值时,做特定输出通道功能选择0输入捕捉1输出比较比较值:TC0-7比较动作8组TC=TCNT+T51ZZTI郑郑州州TIM输出比较OC输出比较引脚断路寄存器OCPDOCPDx=0,允许该通道上输出比较动作在该通道产生;OCPDx=1,禁止该通道输出比较动作在该通道产生,但输出比较标志位仍然置位。即只与输出引脚断开连接。52ZZTI郑郑州州OC之强制比较与OC7控制53ZZTI郑郑州州IC-OC中断中断允许(捕捉中断和比较中断)0禁止1允许中断标记中断号8-15对应0-7通道定时器溢出中断允许 中断号16定时器溢出中断标记54ZZTI郑郑州州16位脉冲累加器对外部IC7脉冲进行计数,结果在PACNT中使用使能PAEN=1,该位不受TEN影响PAMOD=0事件计数模式PEDGE=0:PT7下降沿计数PEDGE=1:PT7上升沿计数PAMOD=1门控计时累加模式PEDGE=0:高电平计时;1:低电平计时PAOVI溢出中断允许位PAI边沿中断允许位中断标志寄存器,中断号中断标志寄存器,中断号17,1855ZZTI郑郑州州16位脉冲累加器的时钟时钟设置PCLK:预分频因子定义的:预分频因子定义的TIM时钟。时钟。PACLK:总线时钟:总线时钟64分频分频PCLK56ZZTI郑郑州州TIM寄存器57ZZTI郑郑州州TIM寄存器58ZZTI郑郑州州PIT模块4个24位定时器(递减计数递减计数)8位时基+16位定时器构成参考:参考:http:/wenku.baidu.com/view/76c85703de80d4d8d15a4f9f.html59ZZTI郑郑州州PIT寄存器PITCFLMTPITCFLMT_PITE=1;PIT模块使能PITCEPITCE_PCEx=1;选择通道使能,x=0,1,2,3PITMUXPITMUX_PMUXx=0;通道x选择时基0,1-时基160ZZTI郑郑州州PIT寄存器PITMTLD0,PITMTLD18位定时器初值PITLD0,PITLD1,PITLD2,PITLD316位定时器初值61ZZTI郑郑州州PIT定时器初值装载正常,当计数器下溢后,装载新的计数器值。PFLMTx=1,立即装载8位计数器值。当PFLTx=1,立即装载16位计数器值。62ZZTI郑郑州州PIT中断PITINTEPITINTE _PINTEx=1;使能下溢中断PITTFPITTF_PTFx=1;清除对应通道中断标志(写1)保险使用方法,开通多路PIT中断时PITTF=0x01; PITTF=0x02; PITTF=0x04; PITTF=0x08;63ZZTI郑郑州州PIT设置及中断使用步骤先关闭PIT设置PIT寄存器使能PIT模块如果某路PIT使能了中断,必须有中断函数PIT对应中断号PIT0-66,PIT1-67,PIT2-68,PIT3-6964ZZTI郑郑州州PIT寄存器65ZZTI郑郑州州练习使用IC捕获PWM边沿,计算PWM周期。使用IC捕获PWM边沿,在中断中控制B口电平,使灯1秒闪烁。使用PIT编写PWM输出100Hz方波使用PIT模块计时24000000/100=240000=0x03a980使用PB口输出66ZZTI郑郑州州ATD参考:http:/wenku.baidu.com/view/1a79024f767f5acfa1c7cd75.html模拟量数字量67ZZTI郑郑州州ATD原理68ZZTI郑郑州州ATD原理结果寄存器结果寄存器0结果寄存器结果寄存器1结果寄存器结果寄存器2结果寄存器结果寄存器3结果寄存器结果寄存器4结果寄存器结果寄存器5结果寄存器结果寄存器6结果寄存器结果寄存器7AN0AN1AN2AN3AN4AN5AN6AN7采采样样保保持持AD转转换换AD时钟时钟总线时钟总线时钟分分频频产生中断产生中断保存结果保存结果中断标志中断标志程序程序 外部信号外部信号启动启动AD69ZZTI郑郑州州ATD时钟及采样ATD0CTL4ATD时钟:ATD采样时间ATD0CTL11:采样前放电0:不放电SMP7-5PRS 4-0 SMP_DIS470ZZTI郑郑州州ATD采样精度、结果保存格式ATD0CTL1ATD0CTL30左对齐1右对齐SRES6-5DJM771ZZTI郑郑州州ATD转换通道选择通道模式ATD0CTL50单通道,1多通道开始通道ATD0CTL5转换序列长度 ATD0CTL3MULT4CDCCCBCAS8C S4C S2C S1C72ZZTI郑郑州州转换序列折返多通道采样时,一个序列中多次采样某通道。WRAP位决定在转换完某通道后折回到AN0通道。73ZZTI郑郑州州转换模式与转换启动ATD0CTL50单次转换1连续转换对对ATD0CTL5写会启动一个转换队列写会启动一个转换队列也可通过外部信号启动也可通过外部信号启动对ATD寄存器写一般会终止当前转换队列SCAN574ZZTI郑郑州州ATD转换完成与中断转换完成标记ATD0STAT01队列转换完成该标记可查询AD完成中断允许ATD0CTL20禁止中断1允许中断,开中断必须有中断程序AD中断号22SCF7ASCIE175ZZTI郑郑州州ATD结果保存结果寄存器ATD0DRxATD0CTL31循环保存0固定保存第一个结果保存在ATD0DR0后面结果顺序存放FIFO276ZZTI郑郑州州外部触发ATD可固定采样时间,便于PID调节ATD0CTL2外部触发使能ETGIGE0禁止外部触发1允许外部触发外部触发配置ETRIGLE4ETRIGP3ETRIGE277ZZTI郑郑州州外部触发ATD信号通道ATD0CTL1ETRIGSEL7ETRIGCH3-078ZZTI郑郑州州ATD其它问题特殊通道VRH,VRL,(VRH+VRL)/2ATD的比较功能当AD值大于等于或小于等于某预定值时,产生一个中断。建议使用硬件比较器替代,如电池电压检测。79ZZTI郑郑州州ATD寄存器80ZZTI郑郑州州练习对一个电压值进行采样使用软件启动使用外部信号启动外部信号可使用PWM产生在中断程序中读取结果81ZZTI郑郑州州程序技巧程序构成主模块子模块1相似程序放在一个子模块上子模块2不常修改的程序放在子模块上代码错行编写for,if,switch等语句即的下一行代码向后错一个TAB,向前提一个TAB代码注释变量起名把子模块添加进工程在主程序中声明子模块中的程序在主程序中条用子程序82ZZTI郑郑州州变量值查看简单技巧在窗口内双击模块变量,可显示其值单击Data1或Data2显示区,在对话框中键入模块变量名,即可查看其值。83ZZTI郑郑州州程序断点设置在调试窗口,选中代码行,右击后添加断点,也可删除断点。程序运行至断点处停止,把鼠标悬停在某变量上,即可查看其值。F10单步运行84ZZTI郑郑州州SCI硬件连接单片机-单片机单片机-PC机单片机单片机PC232电平转换USB接口转换单片机电平转换85ZZTI郑郑州州SCI模块86ZZTI郑郑州州SCI基本使用初始化:数据格式:8位,无校验发送接收波特率设置,SCI寄存器设置发送空闲时写数据到数据寄存器接收完成后从数据寄存器读数据一般使用查询发送:查询空闲时写数据发送中断接收:接收中断时读取数据87ZZTI郑郑州州波特率设置SCI0BDH-L:13bitSBR常用波特率960088ZZTI郑郑州州控制寄存器SCI0CR1LOOPSRSRC SCIWAI 等待模式下0使能SCI,1禁止SCIM数据位 0:8位数据;1:9位数据WAKE 唤醒方式:0空闲线唤醒,1地址屏蔽唤醒ILTPE校验 0无校验,1校验位PT奇偶 0偶校验,1奇校验 PE=1时用都按0默认设置即可89ZZTI郑郑州州控制寄存器SCI0CR2TIE发送中断使能:1TDRE使能,0TDRE禁止TCIE:发送完成中断使能:1使能,0禁止RIE接收中断使能:1RDRF或OR使能,0禁止ILIE:空闲线中断使能TE发送器使能:1使能,0禁止RE接收器使能:1使能,0禁止RWU:接收器唤醒SBK:传输中止设置0x2c即可90ZZTI郑郑州州状态寄存器TDRE:发送寄存器空标志TC:发送完成标志RDRF:接收寄存器满标志IDLE:线路空闲标志OR:溢出标志NF:噪声标志FE:接收器帧错误标志PF:奇偶标志错误AMAPTXPOLRXPOLBRK13:中止符长度TXDIR:RAF:接收器有效标志91ZZTI郑郑州州数据寄存器SCI0DRH-L 9bitR8:接收位8T8:发送位892ZZTI郑郑州州Alternative替代寄存器93ZZTI郑郑州州SCI使用举例:对话式发送if(fasongover=0)while(!SCI0SR1_TC);/检查上次发送是否完成SCI0DRL=ch;fasongover=1;接收void interrupt 20 jieshou(void)jieshouover=SCI0SR1_RDRF;Fasongover=0;shuju=SCI0DRL;/读取数据94ZZTI郑郑州州SCI寄存器95
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号