




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
改变CCS字体方法:perferanceGeneralApperanceColors and FontsBasicText Font将c语言编译成汇编语言之后执行。如果c语言结构不好,则编译后会出现编译成汇编后代码冗余,使得执行效率不高。板子有可能与电脑连接出问题,可以拔下重插一次。在单片机内部flash存储空间有剩余时,可以用于数据存储空间,并且可以使用单片机程序进行数据管理。POR PUC是复位信号看门狗定时器溢出发生复位复位时设置如下:1.RAM堆栈的指针指到最顶端2.初始化看门狗3.初始化外设GIE是总中断具有欠压复位功能工作电流小于20UA待机电流小于0.8UA4个特殊功能寄存器R0是PC指针R1是堆栈指针R2是状态寄存器R3是常数发生器12个通用寄存器R4-R1527条内核指令24条仿真指令7中地址模式无累加器三个时钟:ACLK辅助时钟:频率较低,低速外设MCLK是主时钟,CPU运行的时钟,高频SMCLK是次主时钟,高速外设DCO是数字震荡控制器1M 8M 12M 16M共4个级别,可以通过内置数据进行设置内置VLO低频振荡器,频率为4-20khz。所以可以通过DCO进行分频Timer_A频率可达系统振荡频率,用于定时器时,最小单位时间是20ns2553的电阻有015共16中。用RSEL选择。RSEL与DCO配合 ,值越大频率越大。LF是外接时钟USART支持UART、SPI 共2种通讯方式USCI支持 UART、I2C、SPI 共3种通讯方式关于变量:static变量是对于局部变量而言,如果不定义成静态变量,则每次执行时都会被重新初始化,静态变量则不重新初始化。全局变量和静态变量是存储在RAM中的。extern是外部变量,即将一个文件中的变量在另一个文件中使用。如在文件1中声明了变量z,在文件2中声明extern int z就可以使用文件1的zI/O口赋值方法与C51中的相同,可以使用OXxx或OXxxxx赋值。对P管脚整体赋值是对寄存器的赋值操作BIT0,BIT1,BIT2,BIT3分别表示二进制的第一位,二位,三位为1,四位为1.表示0x01,0x02,,0x04,0x08.P1OUT|=BIT1,是除了第一位的寄存器值被改变,其他位的值都不变,这样可以防止对其他位做了误操作。关于逻辑操作:&0xff与|0x00则不改变原值BIT0分为0和1,1则每次之前的状态都改变,0则每次之前的状态都不变。因此BIT0表示0x0001,即前15位都不改变状态只有最后一位翻转,可以用于位翻转操作。移位操作经常用于数值计算以及某些循环操作。左移n位表示*2n.必须先对需要的未进行输入输出设置,之后才能进行读写操作。模数转换器具有14路输入。定时器与比较器配合,可以得到某个时间函数,如果知道了某物理量随时间的变化规律,就可以进行测量。利用定时器和RAM等存储数据的模块或数组,可以实现任意PWM波的产生,再利用电容的充放电作用可以模拟出任何的周期性波形,方法如下:定时器赋初值,启动定时器,计数停止后进入中断,在中断中将下一个要计的时间加在初值上,继续计数。如此循环。每次进入中断时都翻转一下输出电平。定下某个循环的次数作为一个大周期。P口要选择作为I/O口还是作为寄存器,选定后还要在方向寄存器中确定是输入还是输出。PXDIR为0时,要使用PxREN进行上拉下拉操作,上拉则默认输入是高电平,下拉则默认是低电平。如P1REN|=BIT0;不操作时都默认为下拉。可以在P1REN寄存器里找到各位状态。上电后P1DIR全部为0,即输入状态。P1OUT 的71都是1,p1.0是0.P1IN 的P1.1 P1.2为高,其他为低。在使用时应该先分清自己是要输入还是要输出,然后可以根据需要使用P1REN调整初始状态。I/O口作为输出时,如果输出寄存器P1OUT是高,则对输入寄存器PIN有影响,会直接将P1IN寄存器变为高电平,这就是那位学长说的要注意的问题,要尽量避免,如在进行初始化时P1OUT =0X00;不应该利用这一现象,这不正宗。I/0口的中断注意事项:1.寄存器名称根据芯片的寄存器名称设置,2553是IE1,IE2,不是P1IE,P2IE (要以调试时的寄存器为准,不要看头文件中的。)2.IE1为1是开中断,不要搞反了3.将需要的端口的PxREN置1,即接上拉电阻。4.标志位要软件清零5.逻辑判断时要加括号,否则不能执行6.不必局限于头文件中宏定义的OFIE,OFIFG等,P1,P2的所有管脚都可以独立中断。可以独立设置。7.PxSELx只要置1,那么中断就自动禁止,不管PxIE是什么不同的编译软件的寄存器名称不一样,设置时需要根据实际的进行设置,否则寄存器无效。!定时器是CCR0,CCR1,CCR2,CCR0的优先级最高,并且返回时不要软件清除中断标志位,是自动复位的(相当于51的8位自动重装定时器)。其他定时器必须软件清除中断标志位。CCR0,CCR1都是计数值,相当于51的TH0,TL0.TH1,TL1.关于定时器的连续工作模式和增计数模式?数据段的数据个数一般要超过256个才能通过8路AD转换。MCLK的频率等于机器频率,每一个周期都能够完成一个基本操作。一个指令周期等于1-6个机器周期,根据指令而定。可以参照MSP430时钟设置及其总结一文。ACLK用于低速外设MCLK用于CPUSMCLK用于高速外设注意对寄存器进行位设置时的语法,可以是x|=a+b+c.x表示寄存器名称,a,b,c表示寄存器的位名。多机USART通信时,数据格式为 :起始位 地址 停止位 起始位 数据停止位 起始位 数据 停止位。,其中在空闲模式下,连续10个以上高电平表示空闲,在此之后的一定是地址帧。在10个之内的一定是数据帧。看某种类型变量是几位时,可以用使其溢出后自动赋值的方法来得到。进入中断要有以下几条语句:_BIS_SR(LPM4_bits + GIE); / Enter LPM4 w/interrupt,写在主函数中#pragma vector=PORT1_VECTOR_interrupt void Port_1(void)简易延时要把延时数据定义成全局变量。串口接收部分的软件设置包括对错误数据的处理和对地址、数据的判断及处理两个部分。如果是正确的地址帧,则自动唤醒单片机,RXWAKE置位(只针对地址有效),如果URXWIE软件置位则可以进入地址中断服务程序,进行匹配。GIE是全局中断,_BIS_SR( LPM1_bits+GIE);通常这样用。 串口通信中的中断使能寄存器是IE2,书写并不复杂。标志位寄存器是IFG2。写入发送缓冲器时使得标志位复位,发送缓冲器写入移位寄存器后标志位置位。在发送中断打开的情况下会进入发送中断。响应发送中断后标志位自动清零。不响应中断则不会自动清零,需要软件清除。(并不需要在发送中断中将标志位复位,因为如果有继续发送的数据会在写入发送寄存器时自动使得标志位复位。)接收时收到完整字符并进入接收缓存后接收标志置位。响应接收中断或读取接收缓存后使得标志复位。无论是软件设置标志位置位还是由于接收或发送产生的标志位置位,都可以进入相应的中断。2553的串口中没有ME1,ME2寄存器,即没有串口使能寄存器。有中断使能寄存器IE1,IE2.功能不同。全局变量可以被任意模块改变。累计改变。RXWAKE是可以进行检测的标志位,在地址多机模式下,收到的字符地址位置位则唤醒 。在空闲模式下,接收到字符前检测到线路空闲则唤醒。唤醒了则表示接收到的字符是地址。芯片所有的寄存器在头文件中都有解释,即SFR_8BIT();芯片总中断: _EINT(); 在写入发送寄存器时要检测是不是空闲,即检测UCA0TXIFG是否置位,可以用while((IFG2&UCA0TXIFG)=0);头文件的定义与调试中寄存器界面的顺序是一样的UCSWRST位置位,将使UCRXIE,UCTXIE,UCRXIFG,UCRXERR,UCBRK,UCPE,UCOE,UCFE,UCSTOE 和 UCBTOE 位复位,UCTXIFG 位置位。(这就可以解释为什么以上点之后就可以进入发送中断)清除UCSWRST 将释放 USCI,使其进入操作状态。数据接收中断的优先级最高f/波特率 其实就是每个数据位采样的次数,因此不应该小于3.定时器连续模式用于产生给定的时间间隔.通过中断实现。是比较模式,不需要设置输出模式。#pragma vector=TIMER0_A1_VECTOR是定时器中断和CCR1CCR4中断向量。具体是哪些还要看头文件中的解释。如:#define TIMER1_A1_VECTOR (12 * 1u) /* 0xFFF8 Timer1_A CC1-4, TA1 */表示CCR1CCR4以及TA1.#pragma vector=TIMER0_A0_VECTOR是CCR0中断向量。定时器增模式:产生PWM波(比较部分)定时器连续模式:产生间隔中断处理一些事情,也可用于键盘扫描,产生PWM波等(比较部分)定时器增减模式:产生对称的波(比较部分)定时器连续模式:结合捕获到的TACCRx来测量时间间隔、频率、速度等(捕获部分)以下是地址多机模式发送字符的函数格式:void sendchar(unsigned int address) unsigned int i; UTCTL1|=TXWAKE; TXBUF1=address; while(UTCTL1&0X01)=0); UTCTL1&=TXWAKE; for(i=0;i=6;i+) TXBUF1=Datai; while(UTCTL1&0X01)=0); 下位机(五个149)其中一个地址位为0x01的149接收上位机数据的程序为:/*/*说明:UART点对多点多机通信主机程序。 */*UART以9600bps,8位数据,1位地址,1位停止模式发送。 */*当地址位为1时判断地址,确认呼叫,接收后续字符串,并检查结束0。 */*/#includevoid InitRS_SLA1(void);#define ADDRESS1 0X01 /定义从机的地址位unsigned char j1,count1=0;char Data120,Buffer120;void InitRS_SLA1(void) UCTL1&=SWRST; /SWRST复位,USART允许 UCTL1=CHAR+MM; /8位数据位,1位停止位,地址位模式 URCTL1|=URXWIE; /只有地址字符使URXIFG置位 UBR01=0X03; UBR11=0X00; UMCTL1=0X4A; /使用32KHZ晶振时,波特率为9600bps UTCTL1=0X10; /选定ACLK(32KHZ晶振)为时钟源 ME2|=0X30; /UART1发送及接收模块允许 P3SEL=0XC0; /P3.6,P3.7被UART1发送模块占用 P3DIR=0X40; /P3.6输出,P3.7输入 IE2|=URXIE1; /接收中断允许interruptUART1RX_VECTOR void UART1RX(void) if(URCTL1&URXWIE) /接收为地址方式时,等待正确地指出现 if(RXBUF1=ADDRESS1)/地址正确,改变接收为数据方式,准备接受 URCTL1&=URXWIE; count1=0; else /接收为数据方式时 Data1count1=RXBUF1; /数据存入Data数组中 if(Data1count1+=0) /是否到达末尾 URCTL1|=URXWIE; /改变接收为地址方式 for(j1=0;j1count1;j1+) Buffer1j1=Data1j1; /复制字符串 最新发现:UCDORM相当于URXWIE,即只有地址才能使得RXIFG置位,UCTXADDR相当于TXWAKE,即下一个要发送的字符是地址。UCDORM在接收程序中用到,UCTXADDR在发送程序中用到。ADC10中的INCH_x表示所用通道的最大标号。从这里开始进行采样。ENC=0;则在一次转化结束之后跳到通道都没设置的初始化状态,MSC=0;则一次转化后跳到需要触发信号触发的状态。ADC10:单通道单次转换一次转化以及转化结果进入ADC10MEM期间应保证ENC=1;否则转化结果不确定。在采样保持期间ENC可以变为0,此时结束转化。ENC和ADC10SC可以不在同一条语句中。可以先ENC再SC单通道单次转换在转化结束(由于转化结果出现或ENC=0引起)则不进行下一次转换,跳转到最初的采样通道都没有选择的情况。ADC10:序列通道单次转化必须置MSC=1,否则再一次转化完成后不会继续向下一通道采样转化,需要重新给触发信号。就像单通道单次转换一样。要把使用的通道选定要把对应管脚的的复选功能打开要软件开通各通道:ADC10AE0,ADC10AE1.因为序列通道转换是从高A15向A0的方向采样的,由于并不是这之间的所有通道都有采样的需要,所以要使用通道开放功能,将需要采样的通道置1,不需要采样的置零关闭。ADC10:单通道多次转换工作期间必须使得ENC=1;否则会在一次转化完成后跳到没有定义采样通道的初始化位置。如果一次转化完成后MSC=0;就不会继续转化,等待下一次触发信号启动转化。ADC10的停止方法:在单通道单次转换中,应检测到busy=0时令ENC=0;在其他转换中直接令ENC=0;会在相应的多次转化末时自动结束。One-Block模式下直到所定义的一块的数据量被传送完毕之后才会置标志位。USCI包括USCI_Ax和USCI_Bx两个不同的模块,如果同一模块有几个,则x从0开始编号。I2C要注意master还是slaver,是发送器还是接收器主从可以通过对UCMST编程确定,收发可以通过对UCTR编程确定。I2C自己的地址可以通过对UCBxI2COA(自己)寄存器编程确定,对于主机还可以把要访问的芯片地址写在UCBxI2CSA。还可以指定对于general call(广播)是否回应。I2C可以选择低功耗模式,使用SMCLK,系统自动在需要SCL时启动SMCLK,以达到降低功耗的目的但是SMCLK在其他模块也在使用,启用或关闭就会影响其他模块的功能,建议不使用自动低功耗。当芯片处于slave receive时,由于SCL由外部芯片提供,所以可以工作在LPM4下。接受或发送中断会唤醒芯片。I2C有两个中断源,接收和发送共用一个中断向量,四种通信状态标志共用一个中断向量。收发中断用于收发数据,状态中断用于识别通信格式。(UCALIFG/UCNACLKIFG/UCSTTIFG/UCSTPIFG)以上四种状态中断与UART中的UCAxRXIFG接收中断共用一个中断向量,数据收发与UCAxTXIFG共用一个中断向量。在接收到非应答或写入数据时UCBxTXIFG复位。可以在中断中使用循环,将数据一次性发送出去。也可以通过发送一个字节就退出发送中断,发送结束后再次进入发送中断的方式多次发送。从机可以将SCL拉低来暂时停止数据传输。I2C作为主机接收数据:设置从机地址、发送起始位,开通接收中断即可。发送起始位之后自动发送从机地址,在从机应答后立即清除起始位UCTxSTTI2C作为主机发送模式:设置从机地址、发送起始位,开通发送中断即可。发送起始位之后自动发送从机地址。在发送起始位时立即置位发送标志进入发送中断,可以把数据进行发送。,在从机应答后立即清除起始位UCTxSTT要在传送完某个字节的数据之后立即结束,应该检测UCBxTXIFG是否置位,只有在置位之后发出STOP,才能保证数据的完整传输和快速停止。主机发送模式下,要停止数据可以在数据发送之后立即发送停止位。在主机接收模式下,要停止数据可以在接收完一个字节后发送非应答位和停止位。看门狗在复位模式下不能使用LPM4.因为看门狗总需要一个时钟源。在中断模式下各种低功耗模式都可以使用看门狗在复
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 育婴师多元教育方法分享试题及答案
- 电极设计面试题及答案
- 西医临床技能评估试题及答案
- 药物安全性知识的考察试题及答案
- 理清系统架构设计师考试中的决策能力与执行力要求试题及答案
- 文化产业管理证书考试最热试题及答案
- 系统架构设计师项目周期管理试题及答案
- 育婴师如何有效支持家长试题及答案
- 激光设备的技术路线规划试题及答案
- 文化产业内容创作试题及答案解说
- 安踏组织架构分析
- 2024新版(闽教版)三年级英语上册单词带音标
- 浙江省杭州市2024年中考英语真题(含答案)
- 有限空间中毒窒息事故警示教育
- Java Web编程技术 课件 第17章SSM框架整合与实例
- 2024年青岛市中考数学试卷(含答案解析)+2023年试卷及答案详解
- 冷库建设日常运营与维护保养方案
- 【真题】2024年镇江市中考道德与法治试卷(含答案解析)
- 火花机安全操作规程
- 生猪屠宰兽医卫生检验人员理论考试题库及答案
- 文化行业标准 WH-T 97-2022 舞台灯光系统验收检测规范
评论
0/150
提交评论