




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
sfr16 DP = 0x82; / data pointersfr16 TMR3RL = 0x92; / Timer3 reload valuesfr16 TMR3 = 0x94; / Timer3 countersfr16 ADC0 = 0xbe; / ADC0 datasfr16 ADC0GT = 0xc4; / ADC0 greater than windowsfr16 ADC0LT = 0xc6; / ADC0 less than windowsfr16 RCAP2 = 0xca; / Timer2 capture/reloadsfr16 T2 = 0xcc; / Timer2sfr16 RCAP4 = 0xe4; / Timer4 capture/reloadsfr16 T4 = 0xf4; / Timer4sfr16 DAC0 = 0xd2; / DAC0 datasfr16 DAC1 = 0xd5; / DAC1 data/sbit sensor1=P20;/从左往右数,寻迹用sbit sensor2=P21;sbit sensor3=P22;/LCD初始化置位sbit led=P24;sbit LCD_E=P27;sbit LCD_RW=P26;sbit LCD_RS=P25;/测试的sbit pingheng=P21;/函数定义/-void Timer3_Init (int counts);/计100ms/void LCD_Display(void);void SYSCLK_Init(void);void PORT_Init(void);void Timer3_ISR (void);/时间void delay(void);void Timer(void);void Timer_5S(void);/显示void LCD_Init(void);void LCD_Display(void);void trans(unsigned int dat);/unsigned long x; unsigned char xdata First_data16=0x41,0x43,0x3a; unsigned char ascii10=0,1,2,3,4,5,6,7,8,9;unsigned char ascii_p4=0,0,0,0;unsigned int k,m,chushi,bac; /时间,平衡,初始计时信号 unsigned char *lcdpoint; /指向 lcddata数组的指针unsigned char lcd_data_count;long int delay1;/动作函数/void PORT_Init (void);void PCA0_Init (void);void PCA1_Init (void);void xunji(void);/寻迹void left(void);void right(void);void stop(void);void move(void);void back(void);void left_back(void);void right_back(void);/void main(void) WDTCN = 0xde; / disable watchdog timer WDTCN = 0xad;SYSCLK_Init ();bac=0;chushi=1; PORT_Init(); LCD_Init(); PCA0_Init(); PCA1_Init (); Timer3_Init (65535); /P0=0x00; /P3=0x00;PCA0CPH0 = 0x00;PCA0CPH1 = 0x00;/闪电 速度 EA=1;TMR3CN |= 0x04; /stop(); /xunji(); /初始计时 label: P2=0x0f; if(sensor2=0&chushi=1) delay(); / while(1) P2=0x0f; if(sensor2=0&chushi=1) chushi=2; Timer(); /elsebreak; /chushi=1; /xunji(); P2=0x0f; if(sensor2=0&chushi=2) delay(); /while(1) P2=0x0f; if(sensor2=0&chushi=2) chushi=3; PCA0CPL0 = 0x00; PCA0CPH0 = 0x00; PCA0CPL1 = 0x00; PCA0CPH1 = 0x00; Timer(); / elsebreak; /chushi=2; / xunji(); goto label;/计时 void Timer(void) / switch(chushi) case 2: stop();for (delay1=0;delay1600000;delay1+ );k=0;TMR3CN |= 0x04;led=1;Timer_5S();led=0; k=0; TMR3CN |= 0x04; move(); for (delay1=0;delay11000000;delay1+ ); PCA0CPL0 =0x1f;PCA0CPH0=0x1f; PCA0CPL1=0x1f;PCA0CPH1=0x1f;break; case 3:stop();k=0;led=1;Timer_5S();led=0;back();bac=1; k=0;TMR3CN |= 0x04; for (delay1=0;delay11000000;delay1+ ); break;/backxunji();/ case 4: / start Timer3 void xunji(void)/while(1)if(bac=0) P2=0x0f; if(sensor1=0)&( sensor3=1) / delay();/延时 / c0=0; right(); while(1) P2=0x0f; if(sensor1=1)&( sensor3=1) move(); break; else ; P2=0x0f; if(sensor1=1)&( sensor3=0) / delay();/延时 left();/c1=0; while(1) P2=0x0f; if(sensor1=1)&( sensor3=1) move();/c1=1; break; else; P2=0x0f; if(sensor1=1)&( sensor3=1) /delay();/延时 /move();/c1=0; while(1) P2=0x0f; if(sensor1=1)&( sensor3=1) move();/c1=1; break; else; else P2=0x0f; if(sensor1=0)&( sensor3=0) stop();TMR3CN |= 0x00;EA=0; / P2=0x0f; /if(sensor1=0)&(sensor3=0) /stop();/break; /Timer_5S(); /back(); /j计回车 /计时/ TMR3CN= 0x00; / Stop Timer3; Clear TF3;void SYSCLK_Init (void) int i; / delay counter OSCXCN = 0x67; / start external oscillator with for (i=0; i 256; i+) ; / Wait for osc. to start up while (!(OSCXCN & 0x80) ; / Wait for crystal osc. to settle OSCICN = 0x88; / select external oscillator as SYSCLK/端口配置 / void PORT_Init (void) XBR0=0x28; XBR1=0x00; XBR2=0x40; / Enable crossbar and weak pull-ups P1MDIN=0x00; P0MDOUT=0xFF; P1MDOUT=0xFF; P2MDOUT=0xF0; / P2口设为推挽方式 P3MDOUT=0xFF; / P2口设为推挽方式 P74OUT=0xFF; P2=0x0F;/void right(void)P4=0x20;void left (void)P4=0x02;void stop(void)P4=0x00;void move(void)P4=0x22;void back(void)P4=0x88;void left_back(void)P4=0x80;void right_back(void)P4=0x08;/脉宽void PCA0_Init (void) /8位脉宽输出 / 允许PCA工作 PCA0CPM0 = 0x42; PCA0CPL0 = 0x00; PCA0CPH0 = 0x00; PCA0L=0x88; PCA0CN = 0x40; void PCA1_Init (void)/0.1口输出 PCA0CPM1 = 0x42; /8位脉宽输出 PCA0CPL1 = 0x00; PCA0CPH1 = 0x00;PCA0L=0x88;PCA0CN = 0x40; /平衡函数 void balence(void) TMR3CN= 0x00; / Stop Timer3; Clear TF3; k=0; TMR3CN |= 0x04; / start Timer3 while(k=5) trans(k); LCD_Display(); / void Timer3_Init (counts)/counts=20000个时钟周期 TMR3CN= 0x00; / Stop Timer3; Clear TF3; TMR3RL= -counts; / Init reload values TMR3= 0xffff; / set to reload immediately EIE2|= 0x01; / enable Timer3 interrupts / TMR3CN |= 0x04; / start Timer3 EIP2=0x01;/void Timer3_ISR (void) interrupt 14 static int i=0; TMR3CN &= (0x80); / clear TF3 (溢出标志清零) TMR3CN |= 0x04; / start Timer3 i+; if(i=45) i=0; k+;trans(k);LCD_Display(); / void LCD_Display(void) static unsigned char data1; LCD_RS=1; LCD_RW=0; LCD_E=1; for(x=0;x0;lcd_data_count-) data1=*lcdpoint; /读出数据 P3=data1; /写数据到端口 LCD_E=0; LCD_E=1; /控制LCD lcdpoint+; for(x=0;x1000;x+); LCD_RS=0; LCD_RW=0; LCD_E=1; P3=0xc0; LCD_E=0; /void trans(unsigned int dat) ascii_p3=dat%10; dat=dat/10; ascii_p2=dat%10; dat=dat/10; ascii_p1=dat%10; dat=dat/10; ascii_p0=dat%10; dat=dat/10; First_data6=ascii ascii_p3 ; First_data5=ascii ascii_p2 ; First_data4=ascii ascii_p1 ; First_data3=ascii ascii_p0 ; /LCD初始化void LCD_Init(void) LCD_RS=0; LCD_RW=0; LCD_E=1; for(x=0; x10000; x+); P3=0x38; LCD_E=0; LCD_E=1; for(x=0; x2000; x+); P3=0x0e; LCD_E=0; LCD_E=1; for(x=0; x2000; x+); P3=0x06;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 襄阳五中2025届高三下学期5月适应性考试(一)语文试题+答案
- 口腔照护流程培训课件
- 如何讲好技术培训课件
- 企业EHS手册发布培训
- 滨江就业协议书
- 通信设备购销合同协议
- 早教培训协议书
- 毕业友谊协议书
- 《微软公司中文版简介》课件
- 产品采购与质量保证协议条款书
- 纺织服装产业链的韧性及其空间演变研究
- 2025-2030中国公路沥青行业市场发展趋势与前景展望战略研究报告
- 2024年全球及中国互联网舆情监测系统行业头部企业市场占有率及排名调研报告
- 2025年人教版五年级(下)期中数学试卷
- GB/T 196-2025普通螺纹基本尺寸
- 《血小板分离机》课件
- 快递云仓合同协议
- 2025-2030功能性饲料行业市场发展分析及发展前景与投资机会研究报告
- 江苏省常州市2024-2025学年高一下学期4月期中考试英语试题(含答案)
- DB11-T 1444-2025 城市轨道交通隧道工程注浆技术规程
- 建筑设计中的重点难点及相应控制措施
评论
0/150
提交评论