




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、图1比赛场地示意图图2机器人出发区示意图 4/机器人搬运比赛程序如下:项 目名:基于Freescale AW60的/硬件连接:*/程序描述:定时器2作为颜色传感器计数器;定时器 作为颜色传感器的定时器溢出中断*1通道0-1作为PWM输出;通道2/超声波计数用定时器 1说 明:*/ ? */ */作者信息?*/版本信息?/完成时间?/修订记录:/时间:/内容:?*/ 调用头文件#i nclude "In cludes.h" void mai n(void)/定义变量,不管在主程序还是子函数,都需要把变量的定义放在最前面,否则会报错int D=0;int m=0;char nu
2、m仁0;用于计数用char num2=0;用于转弯计数用char flag_forward=1;/ 前进的标志位char flag_backward=1; /后退的标志位用到的端口,一定要记得初始化端口数据方向寄存器/液晶模块/PTGDD |= 0b00011111;液晶模块10的输入输出配置/颜色传感器模块/PTCDD |= 0b00101100;/配置颜色传感器模块/ PTFDD &= 0b11111110;/红外传感器模块及驱动模块PTDDD = 0b00000111;/ PTDD4作为定时器 2的外部时钟输入PTBDD = 0b01000000;/前五个是红外传感器,最后两个是
3、超声波的发送和接收PTEDD |= 0b11111100;/ 配置驱动模块/PTEDD &= 0b11111110;/配置红外接近传感器/前两个口左右计数的口PTADD = 0xFF;PTFDD = 0b00111111;禁止总中断112关总中断Disablel nterrupt();3芯片初始化MCUI nit();4模块初始化PWMnit(1,OxOfaO);/用作PWM输出控制电机周期最佳控制大概400ms左右(控制舵机用 TPM_NUM_1,CH_2 )/TPMi nit(2);/用来作为颜色传感器的计数用外部时钟/*rb=0;bb=0; gb=0; ryz=0; byz=0;
4、 gyz=0; flag=0;/值的初始化/值的初始化/值的初始化/值的初始化/值的初始化/值的初始化值的初始化*/nu m_black=0;nu m_left=0;nu m_right=0; D=60;/baip in ghe ng();/ En able In terrupt(); while (1)/开总中断 */*文件名:无/说 明:完成直推三个目标/作者:*/初始时间:/修订记录:*备注:程序顺序执行一遍就走完了全程,回到出发区*/*/*while( nu m_black<2)nu m_black= black_ num (0);xunji_forward_3();if(num
5、 _black=2)stop(O);DelayMs(IOO);while( nu m_right<=1)nu m_right= black_ nu m(1);xunji_forward_3();/到达目的地/作为后退的准备stop(0);nu m_right=0;nu m_black=0;flag_backward=0;while(flag_backward=0)back_faward(); DelayMs(1000);if(COUNT_RIGHT=1) flag_backward=1;/后退到赛道中心的程序/等待黑线的过去turn_left(2);个目标while(flag_forwa
6、rd=0) xunji_forward_3();if(COUNT_RIGHT=1)/左转90角度推第二flag_forward=1; flag_backward=O;直推完成开始后退的旅程while(flag_backward=O)back_faward(); if(C0UNT_RIGHT=1) flag_backward=1;middle_faward(70);DelayMs(100);/避免再碰到黑线stop(0);DelayMs(2);/减缓电机的抖动黑线数清零?左转180度推第三个目Eleft(70);while( nu m_left<=3)标num _left=black_ n
7、u m(1);if(nu m_left=3)nu m_left=0;nu m_black=0;DelayMs(10);while(flag_forward=0)xunji_forward_3(); if(C0UNT_RIGHT=1) flag_forward=1; flag_backward=O;while(flag_backward=0)back_faward(); if(COUNT_RIGHT=1) flag_backward=1;直推完成开始后退的旅程turn_left(3); back_faward();while( nu m_black<2)nu m_black= black_
8、 num (0); back_faward();DelayMs(1000);*/文件名:无/说明:直走90度弯的程序/作者:*初始时间:/修订记录:*/备注:在碰到第二根黑线之前程序要循环扫描,执行完程序就刚转90度弯,推物块到目的地,然后返回到中心停住的程序*/*black_num(O);if(nu m_black=2)turneft(4);/黑线数清零?为直推做好准备,必须写的程序直推完成开始后退的旅程nu m_black=0; flag_forward=0;else xunji_forward_3(); while(flag_forward=0)xunji_forward_3(); if
9、(C0UNT_RIGHT=1) flag_forward=1; flag_backward=0;while(flag_backward=0)back_faward();if(COUNT_RIGHT=1)flag_backward=1; while(1);*/文件名:无/说 明:直走90度弯的程序/作者:*/初始时间:*/修订记录:*备注:在碰到第二根黑线之前程序要循环扫描,执行完程序就刚转 90度弯而已,后面numl是被清零的,所以还是在执行循迹*/*/*if(se nsor_i np_forward()=0x1f) nu m1+;while(se nsor_i np_forward()=0x
10、1f);if(n um1=2)Eleft(70);while( num2<4)if(nu m_right=1)nu m2+;DelayMs(1000);while( nu m_right=1);nu m1=0;DelayMs(3000);else xunji_forward_3();*/文件名:Robot_Run.c说明:双足机器人运动函数文件/作者:/初始时间:*/修订记录:*/备注:*/*#in elude "Robot_Ru n.h"不同的车,因为电机接线不一样,对应的这些设置也会有变动,最好自己先测试这几个 最基本的动作ui nt8 flag_black=O,
11、flag_right=O,flageft=O;车前的传感器uint8 sen sor_ in p_forward()un sig ned char sen sor_forward;sen sor_forward=PTBD;sen sor_forward&=Ox1F;retur n sen sor_forward;车后的传感器uint8 sen sor_ in p_backward()un sig ned char sen sor_backward;sen sor_backward=PTDD;sen sor_backward&=0x07;retur n sen sor_backw
12、ard;/此段为前进程序启动void middle_faward(ui nt8 speed)PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);78PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed+4);/ 已经调整好的参数占空比百分之IN 仁1;IN2=0;IN3=1;IN4=0;DelayMs(2);/设置PWM设置的时间间隔 /此段为旋转左转程序程序启动void left( uint8 speed)PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed-40);PWM_Set(TPM_NUM_2, TPM1_CH_1 ,
13、speed);IN 仁1;IN2=0;IN3=1;IN4=0;DelayMs (2);/此段为旋转大左转程序程序启动void Eleft( uint8 speed)PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed-20);IN 仁1;IN2=0;IN3=0;IN4=1;DelayMs (2);/此段为旋转右转启动程序void right( uint8 speed)PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1
14、, speed);IN 仁1;IN2=0;IN3=1;IN4=0;DelayMs (2);/此段为旋转大右转启动程序void Eright( uint8 speed)PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed);IN 仁0;IN2=1;IN3=1;IN4=0;DelayMs (2);/此段为后退直走序程序启动void back_faward (uint8 speed)PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);78PWM_Set(TPM_NUM_2, TPM
15、1_CH_1 , speed+4); 已经调整好的参数占空比百分之IN 仁0;IN2=1;IN3=0;IN4=1;DelayMs(2);/此段为旋转左转程序程序启动void backleft( uint8 speed)PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed-40);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed);IN 仁0;IN2=1;IN3=0;IN4=1;DelayMs (2);/此段为旋转大左转程序程序启动void backEleft( uint8 speed)PWM_Set(TPM_NUM_2, TPM1_CH_0 , sp
16、eed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed);IN 仁0;IN2=1;IN3=1;IN4=0;DelayMs (2);/此段为旋转右转启动程序void backright( uint8 speed)PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed);IN 仁0;IN2=1;IN3=0;IN4=1;DelayMs (2);/此段为旋转大右转启动程序void backEright( uint8 speed)PWM_Set(TPM_NUM_2, TPM1_CH_
17、0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed);IN 仁1;IN2=0;IN3=0;IN4=1;DelayMs (2);/此段为停止启动程序void stop( uint8 speed)PWM_Set(TPM_NUM_2, TPM1_CH_0 , speed);PWM_Set(TPM_NUM_2, TPM1_CH_1 , speed);IN 仁0;IN2=0;IN3=0;IN4=0;DelayMs (2);/*函数名:xunji_backward_3/功能:后退五路循迹/参数:无*/返回:无*/说明:1、执行该循迹程序时在不断地设置定时器PWM
18、模块;/2、使用时要注意一定要每隔一段时间执行此程序一次(两者是缺一不可的),才能达*到循迹的功台匕 冃匕/*void xunji_backward_3()/五路循迹switch(se nsor_i np_backward()中间的灯碰到黑线直走case 0x04: back_faward(80);break;case 0x02: backEleft(80);break;case 0x03: backleft(80);break;case 0x08: backEright(80);break; case 0x18: backright(80);break; default: back_fawa
19、rd(80);break;void xunji_forward_5()其他的灯的情况直走五路循迹switch(se nsor_i np_forward()case 0x04: middle_faward(80);break;case 0x02: Eleft(80);break;case 0x01: Eleft(80);break;case 0x03: left(80);break;case 0x08: Eright(80);break;Eright(80);break;case 0x18: right(80);break;default: middle_faward(80);break;中间的
20、灯碰到黑线直走右边的灯碰到黑线右转左边的灯碰到黑线左转其他的灯的情况直走/函数名:xunji_forward_3*/功/参能数:三路循迹:无/返回:无*/说明:1、执行该循迹程序时在不断地设置定时器PWM模块;/2、使用时要注意定要每隔-段时间执行此程序-次(两者疋缺不可的),才台匕 冃匕达至U循迹的功能。*/void xunji_forward_3()/三路循迹中间的灯碰到黑线直走右边的灯碰到黑线右转switch(se nsor_i np_forward()case 0x04: middle_faward(80);break;case 0x02: Eright(80);break;case
21、0x03: right(80);break;左边的灯碰到黑线左转case 0x08: Eleft(80);break;case 0x18: left(80);break;default:middle_faward(80);break;/ 其他的灯的情况直走/*/函数名:black_num*/功能:进行计数/参数:se=0输出为传感器全黑计数,num_blackII se=1输出右边传感器计数,num_rightII se=2输出对左边传感器计数,num_left*II返回:见参数*说明:程序每隔一段要进入这一段函数,才能计数,还有计数值会一直保留,II想 清除的 时候 可以对num_black
22、,num_left,num_right 进行清零*II*uint8 black_ num(uint8 se)if(se=0)if(se nsor_i np_forward()=0x1f)flag_black=1;else if(flag_black=1)nu m_black+;flag_black=0;retur n nu m_black;if(se=1)if(COUNT_RIGHT=1)flag_right=1;else if(flag_right=1)nu m_right+;flag_right=0;retur n nu m_right;if(se=2)if(C0UNT_LEFT=1)fl
23、ag_left=1;else if(flag_left=1)nu m_left+;flag_left=0;return nu m_left;/*/函数名:turn_left*/功 能:到十字路口进行左转弯的程序/参 数:shu表示转弯时记黑线数,没到黑线的下降沿就计数*/返回:无*说 明:该程序执行一次就可以,也就是说程序执行一遍就相当于转弯完成,后面就跳出程序了*/ 执行*void tur n_left( un sig ned char shu1)middle_faward(80);DelayMs(100);Eleft(80);while( nu m_right<=shu1)nu m_
24、right=black_ nu m(1);if(nu m_right=shu1)nu m_right=0;DelayMs(IOO);/*/函数名:turn_right*/功能:到十字路口进行右转弯的程序/参 数:shu表示转弯时记黑线数,没到黑线的下降沿就计数*/返回:无*说明:该程序执行一次就可以,也就是说程序执行一遍就相当于转弯完成,后面就跳出程序了*/ 执行*void tur n_right( un sig ned char shu2)middle_faward(80);DelayMs(100);Eright(70);while( nu m_left<=shu2)num _left
25、=black_ nu m(1);if(num _left=shu2)nu m_left=0;nu m_black=0;DelayMs(100);/函数名:banyun*/功能:沿直线循迹,然后碰到物体停下,然后搬到目的地/参数:无*/返回:无*/说明:该程序执仃次就可以,也就是说程序执行一遍就相当于转弯完成,运行完到达目的地*II 执行*void banyun()int D;DelayMs(20);while(D>3)D=ceju();xunji_forward_5();if(D<=3)stop(0);DelayMs(200);while(fro nt仁=0)xunji_forwa
26、rd_5();stop(0);/文件名:PWM.c/说明:PWM输出文件*/作者:初始时间:/修订记录:*/备注:/头文件#i nclude "PWM.h"/*II定时器1时钟源和III IIIIIIII IIII+-PS0III III+-PS1 6III II+-PS2IIII I+-CLKSAI +倍分频II10:固定系统时钟II2MCLKSBI-时钟源系统固定时钟01 :总线时钟 20MTOIE-禁止溢出中断 elseII函数名:PWMnit(PWM波初始化输出函数)/功能:初始化PWM波周期与初值II参数:II(1)TPM_No:定时器号(1-2)II(3)Per
27、iod:PWM 波周期(0-65535)返回:无II*void PWMni t(ui nt8 TPMNo ,ui nt16 Period)uin t16 Period_CD1;起传递值周期值的变量uin t16 Period_CD2;II起传递值周期值的变量if(TPMNo = 1)TPMNo = 1;Period_CD1=4000;elseTPMNo = 2;Period_CD2=Period;TPM_CSTR(TPMNo) = 0x00;II计数寄存器初值=0x0000TPM_CNTH(TPMNo) = 0x00;TPM_CNTL(TPMNo) = 0x00;II设置PWM波的周期 =Pe
28、riodTPM_MODH(TPMNo) = (ui nt8)(Period >> 8); TPM_MODL(TPMNo) = (ui nt8)Period;if(TPMNo = 1)TPM_CSTR(1) = 0b00001000;分频数的选择TPM_CSTR(2) = ObOOOIOOII;/丨 lllll/定时器2时钟源和分频数的选择/丨 IIII+-PS0/1 III+-PS1 -8倍分频/| |+-PS2/丨|+-CLKSA/I +-CLKSB/-时钟源系统固定时钟01:总线时钟 20M10:固定系统时钟2M/+-TOIE-禁止溢出中断void PWM_Set(ui nt8
29、 TPMNo, ui nt8 CHNo, uint8 Duty)ui nt16 j;ui nt16 Period;/=/注意:一定要加上,否则PWM的周期和占空比不会改变先禁止用定时器,不选择时钟即可/=TPM_CSTR(TPMNo) = 0x00;/ 一定一定要写上这句,不然占空比不会变Period=4000;/时钟源及分频设置设置好,改变占空比时最好就不要去改,二十去改变设好的占空比量就可以if(TPMNo = 1)TPMNo = 1;/ Period = Period_CD1;elseTPMNo = 2;/ Period = Period_CD2;if(Duty>=100) Dut
30、y=100; else if (Duty<=0) Duty=0;j = (Period / 100) * Duty;if(TPMNo = 1)/定时器1通道0数值寄存器TPM1_CHVH(CHNo)=(ui nt8)(j >> 8);TPM1_CHVL(CHNo)=(ui nt8)j;/设置定时器1通道状态和控制寄存器TPM1_CHSCSTR(CHNo) = ObOOIOIOOO;/lllll/|+ELSA/|+-ELSB/-边沿对其模式/11+|+-+-/TPM_CSTR(1) = 0b00001000;分频数的选择MSAMSB/-PWM 模式,CPWMS位需要设置为0CH
31、IE-禁止中断/定时器1时钟源和/l lllll/| |+-PS0/| |+-PS1 -1/| |+-PS2/| |+-CLKSAI +倍分频/10:固定系统时钟/elseCLKSB/-时钟源系统固定时钟O1 :总线时钟 2OM2MTOIE-禁止溢出中断/定时器1通道0数值寄存器TPM2_CHVH(CHNo)=(ui nt8)(j >> 8);TPM2_CHVL(CHNo)=(ui nt8)j;/设置定时器2通道状态和控制寄存器TPM2_CHSCSTR(CHNo)=0b00101000;/lllll/|+-ELSA/|+-ELSB/-边沿对其模式/|+-MSA/|+-MSB/-PW
32、M 模式,CPWMS位需要设置为0/+-CHIE-禁止中断TPM_CSTR(2)=0b00010011;/l lllll/定时器2时钟源和分频数的选择/l llll+-PS0/l lll+-PS1 -8倍分频/l ll+-PS2/l |+-CLKSA/l +-CLKSB/-时钟源总线时钟01:总线时钟20M10:固定系统时钟2M/+TOIE-禁止溢出中断/*/函数名:PWM_Set(单个PWM波输出函数)II功能:根据所需的PWM波的周期和占空比,并设置相关寄存器,输出PWM波II参数*II(1)TPM_No:定时器号(1-2)*II(2)CH_No:通道号(定时器1通道号0-5,定时器2通道
33、号0-1)*II(3)a ngle:舵机旋转角度*II返回:无*II说明:角度(° ) :045*90135180II正脉宽(ms): 0.51.01.52.02.5*/*同样的道理,控制舵机要改变占空比,必经关闭打开定时器这两个步骤,所以直接把它写 到函数进去,避免遗忘void PWM_Set_duoji(ui nt8 TPMNo,ui nt8 CHNo,ui nt8 an gle)ui nt16 duty = 0; /=/注意:一定要加上,否则PWM的周期和占空比不会改变先禁止用定时器,不选择时钟即可/= if(TPMNo < 2)TPMNo = 1;elseTPMNo =
34、 2;TPM_CSTR(TPMNo) = 0x00;if(an gle<=60)an gle=60;else if(an gle>=120)an gle=120;duty = an gle*25;平的时间,这和定时器状态和控制寄存器duty = (ui nt16)(duty/9.0);TPM_CSTR(TPMNo) = ObOOOIOOII; duty += 125;则1/(fosc/p)振荡一次用的时间,振荡 if(TPMNo = 1)高电平的时间/注意,这个推得的式子,要保证舵机处于高电/紧密联系,此关系式子推得的前提是必须一旦时钟源和分频变了,则不能用这个式子/举例,转90度
35、,假设设通道寄存器值为a,/a*(1/(fosc/p)必须等于 1.5ms,即卩 0.0015s,即定时器1if(CHNo > 5)CHNo = 5;根据占空比,设置相应通道数值寄存器TPM1_CHVH(CHNo) = (ui nt8)(duty >> 8);TPM1_CHVL(CHNo) = (ui nt8)duty;设置定时器1通道状态和控制寄存器(主要为PWM对齐方式选择,时钟源选择, 分频因子选择)TPM1_CHSCSTR(CHNo):=0b00101000;/IIIII/llll+ELSA/III+-ELSB/-边沿对其模式/II+-MSA/I+-MSB/-PWM
36、模式,CPWMS位需要设置为0/+-CHIE-禁止中断TPM_CSTR(1)=0b00010011;/丨 IIIII/定时器2时钟源和分频数的选择/| 1111+-PS0/丨 III+-PS1 -8倍分频/丨 |+-PS2/| |+-CLKSA'/| +-CLKSB/-时钟源系统固定时钟01:总线时钟 20M10:固定系统时钟2M/+-TOIE禁止溢出中断else/定时器2if(CHNo > 1)CHNo = 1;根据占空比,设置相应通道数值寄存器TPM2_CHVH(CHNo) = (ui nt8)(duty >> 8);TPM2_CHVL(CHNo) = (ui n
37、t8)duty;设置定时器2通道状态和控制寄存器(主要为PWM对齐方式选择,时钟源选择, 分频因子选择)TPM2_CHSCSTR(CHNo) = ObOOIOIOOO;/IIIII/|+ELSA/III+-ELSB/-边沿对其模式/|+MSA/|+MSB/-PWM 模式,CPWMS位需要设置为 0/+CHIE-禁止中断TPM_CSTR(2)=0b00010011;/丨 lllll/定时器2时钟源和分频数的选择/丨 IIII+-PS0/| |+-PS1 -8 倍分频/丨 11+-PS2/II+-CLKSA/| +-CLKSB/-时钟源系统固定时钟01:总线时钟 20M10:固定系统时钟2M/+-
38、TOIE-禁止溢出中断/函数名:ECT_Init/功能:输入捕捉模块/参数:/(1)TPM_No:定时器号(1-2)/(2)CH_No:通道号(定时器1通道号05,定时器2通道号01)返回:无说明:无/*void ECT_I ni t(ui nt8 TPM_No,ui nt8 CH_No)if(TPM_No > 2)TPM_No = 2;if(TPM_No < 1)TPM_No = 1;if(TPM_No = 1)if(CH_No > 5)CH_No = 5;TPM1_CHSCSTR(CH_No) = 0b01000100;/llllllll/IIIIIII+-0:IIIII
39、I+-0:|+-ELS nA:跳变沿/输出电平选择位01上升沿捕/捉/|+-ELS nB:/|+-MSnA:通道模式选择位00011x/|+MSnB:输入捕捉输出比较PWM模式/|+CHn IE:通道中断允许位1允许中断0禁止中断/+CHnF:通道捕捉标志位1发生捕捉if(TPM_No =2)if(CH_No> 1)CH_No = 1;TPM2_CHSCSTR(CH_No):=0b01000100;/IIIIIII+-0:/IIIIII+-0:/|+-ELS nA:跳变沿/输出电平选择位01上升沿捕捉/|+-ELS nB:/|+-MSnA:通道模式选择位00011x/|+MSnB:输入捕
40、捉输出比较PWM模式/|+CHn IE:通道中断允许位 0禁止中断1允许中断/+CHnF:通道捕捉标志位 1发生捕捉/设置定时器状态和控制寄存器TPM_CSTR(TPM_No) = ObOOOOIOOO;/丨 IIIII/| |+-PS0/1111+-PS1 -0 倍分频/111+-PS2/| |+-CLKSA/| +-CLKSB/-时钟源选择系统固定时钟/+-TOIE-禁止溢出中断/*/ 文件名:timer.c说明:定时器驱动文件/定时器头文件#in elude "timer.h"/*/函数名:TPMinit*功 能:对定时器初始化,禁止定时器1溢出中断,设置为1s发生1
41、次定时器溢出中断*/参 数:TPMNo为定时器号(12)*/返回:无*/说明:无*/*void TPMi nit(ui nt8 TPMNo)/参数溢出处理if(TPMNo>2)TPMNo=2;else if(TPMNo<1)TPMNo=1;/设置定时器状态和控制寄存器分频因子1,设置为固定时钟频率,为2MHz,禁止溢出中断TPM_CSTR(TPMNo) =0b00011000;/丨 lllll/| |+-PS0/| |+-PS1 -1 倍分频/| |+PS2/|+CLKSA/| +CLKSB/-时钟源选择外部时钟源输入/+TOIE-禁止溢出中断/TPM_CSTR(TPMNo) =0
42、b00010010;/丨 lllll/| |+-PS0/| |+-PS1 -4 倍分频/| |+PS2/| |+CLKSA/| +CLKSB/-时钟源选择系统固定时钟/+TOIE-禁止溢出中断/计数寄存器初值=0x0000/ TPM_CNTH(TPMNo) = 0x00;/ TPM_CNTL(TPMNo) = 0x00;/预置寄存器设定值 =0x7A12/ TPM_MODH(TPMNo) = 0x7A;/ TPM_MODL(TPMNo) = 0x12;/*/函数名:SecAddl/功 能:以秒为最小单位递增时,分,秒缓冲区的值(00:00:00-23:59:59)/参数:*p:计数变量的首地址
43、/返回:无/说明:无/*void SecAdd1(ui nt8 *p)*(p+2) += 1;/秒加1if (*(p+2) >= 60)/秒溢出*(p+2)= 0;清秒*(p+1) += 1;/分加1if (*(p+1) >= 60)/分溢出*(p+1)= 0;清时*p += 1;/时加1if (*p >= 24)/时溢出*p = 0;/清时/-/函数名:timerSet10MS()/功/参/返/*能:设置疋时10ms中断*用疋时*器1数:定时器号回:无说TPMNo明/-*void timerSet10MS(ui nt8 TPMNo) /参数溢出处理if(TPMNo>2
44、)TPMNo=2;else if(TPMNo<1)TPMNo=1;TPM_CSTR(1) =0b00010001;/2 分频、2MTPM_CNTH=0x00;TPM_CNTL=0x00;/预置寄存器设定值=0x2710 10msTPM_MODH(1) = 0x27;TPM_MODL=0x10;EnabletimerInt(1); /允许定时器1中断/ EnableTPM1Chlnt(2);允许定时器1通道2中断#i nclude "Color.h"/文件名:Color.c说明:颜色传感器/作者:童惠彬*/ 初始时间:2013.05.26/修订记录:*/备注:/*/测颜色程序 void celia ng()/*求 R. 值 *tcs230_s2=0;tcs230_s3=0;/选择红色滤光器tcs230_e n=0;/ timerSet10MS(1);/10毫秒开始计时开中断/ En ableI nterrupt();/ 开总中断*/TPM_CNTH(2)=0;TPM_CNTL(2)=0;/ 开始计数DelayMs(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 设备融资长期租赁合同书
- 化工企业应急事故演练计划
- 产权置换协议范本
- 污水厂劳务合同
- 专业服务合同法院强制执行申请书范文
- 城市公共交通改善工作计划
- 2025运输行业职业卫生培训计划
- 餐饮礼仪培训讲课
- 小学科学实验室创新实验计划
- 职业中专德育社会责任计划
- 2025年4月自考15040习概押题及答案
- 《珍惜水资源共筑绿色梦》主题班会
- 工作危害分析(JHA)评价记录表
- 2024新一代变电站集中监控系统系列规范第1部分:总则
- 2024至2030年中国咨询行业前景预测与投资机会洞察报告
- 辽宁沈阳历年中考语文现代文之记叙文阅读17篇(含答案)(2003-2023)
- 《马克思〈法兰西内战〉解读》
- 《欣赏 紫竹调(简谱、五线谱)》课件
- 质量信得过班组申报材料
- 2024年北京市朝阳区高三二模生物试题
- 基于LTE-V2X直连通信的车载信息交互系统技术要求及试验方法
评论
0/150
提交评论