




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、附錄 C: 程序原代碼 #include <hidef.h> /* common defines and macros */ #include <mc9s12dg128.h> /* derivative information */ #pragma LINK_INFO DERIVATIVE "mc9s12dg128b" #define hs TFLG1_C0F #define clr_hs TFLG1_C0F #define video ATD0DR0 #define odd_even PTIS_PTIS2 /* Declaration of Val
2、uebales */ /CCD variables/ #define r_max 40 #define l_max 40 char ccd_dr_max+2l_max; char ccdl_max; char r_chg; char row; char line; char interval=7; char oeflag=0; char y_upr_max+2; char temp_upr_max+2; #define latch 20 #define latch_neg -20 char w_flgr_max+2; int dif; /-/ /SCI variables/ char sci_
3、d; /-/ /PWM variables/ #define mid_P 20 int ctl; 第VI頁 第十一章 總結 int errr_max+2; unsigned char m_speed; int str; int turn; unsigned char pulse6; unsigned char speed; unsigned char turn_S; unsigned char str_S; /-/ /general variables/ char x,y,z; /-/ /* Declaration of Functions */ /overall initiation voi
4、d ini_orall(void) DDRS_DDRS2=0; DDRS_DDRS7=1; TIOS_IOS0=0; TIOS_IOS1 = 0; TCTL4=0b00001101; TSCR1_TEN = 1; ICPAR_PA1EN = 1; DDRH=0xff; /initiate bus clock void ini_PLL(void) REFDV=3; SYNR=7; while(0=CRGFLG_LOCK); CLKSEL=0x80; VII第 頁 /*SCI*/ /initiate SCI void ini_SCI(void) SCI0BD=208; SCI0CR1=0x00;
5、SCI0CR2=0x0C; /SCI receive void re_sci(void) while(SCI0SR1_RDRF!=1); sci_d=SCI0DRL; /SCI transmit void tx_sci(char tx_d) while(SCI0SR1_TC!=1); while(SCI0SR1_TDRE!=1); SCI0DRL=tx_d; /*/ /*PWM*/ /PWM & 33886 initialization void ini_PWM(void) PTS_PTS7 = 0; PWME = 0x00; PWMCTL_CON01= 1; PWMPRCLK = 0
6、x33 ; PWMSCLA = 100 ; PWMSCLB = 1 ; PWMCLK = 0b00011100; PWMPOL = 0xff ; PWMCAE = 0x00 ; PWMPER0 = 0x4e ; 第VIII頁 第十一章 總結 PWMPER1 = 0x20 ; PWMDTY0 = 0x18 ; PWMDTY1 = 0x38 ; PWME_PWME1 = 1 ; PWMDTY2 = 120 ; PWMPER2 = 200 ; PWME_PWME2 = 1 ; /Set the angle of steer void pwm_set(int dutycycle) int high8;
7、 high8=dutycycle&0xFF00; PWMDTY0=high8>>8; PWMDTY1=dutycycle&0x00FF; /*/ /*SPEED*/ /Initiate the Average speed void speed_init(void) DDRM_DDRM0=0; DDRM_DDRM1=0; DDRM_DDRM2=0; DDRM_DDRM3=0; DDRM_DDRM4=0; DDRM_DDRM5=0; DDRJ_DDRJ6=0; DDRJ_DDRJ7=0; if(1=PTIM_PTIM0) m_speed = 120 + 2*(PTIM_
8、PTIM1*10+PTIM_PTIM2*5+PTIM_PTIM3*2+PTIM_PTIM4*2+PTIM_PTIM5+PTIJ_PTIJ6+PTIJ_PTIJ7); else m_speed = 120 - 2*(PTIM_PTIM1*10+PTIM_PTIM2*5+PTIM_PTIM3*2+PTIM_PTIM4*2+PTIM_PTIM5+PTIJ_PTIJ6+PTIJ_PTIJ7); IX第 頁 PWMDTY2=m_speed; str_S=m_speed/2-10; /Get the current speed void get_speed() char k; for(k=0;k<5
9、;k+) pulsek=pulsek+1; pulse5=PACN1; speed=pulse5-pulse0; /Set the current speed void set_speed(unsigned char a) if(speed<a) PWMDTY2=200; if(speed>a) PWMDTY2=0; /*/ /*CONTROL*/ void vhcl_pid(void) get_speed(); if(err8>0) ctl=6250+42*err8; else ctl=6250+38*err8; /- dif=err2+err10-2*err6; if(d
10、if>-7)&&(dif<7)&&(err6>-15)&&(err6<15) str+; 第X頁 第十一章 總結 turn=0; PTH=0xff; else turn+; if(turn>20) str=0; PTH=0x00; /- if(turn>0) set_speed(29); else set_speed(str_S); /- if(ctl<5200) ctl=5200; if(ctl>7400) ctl=7400; pwm_set(ctl); if(1=odd_even) oeflag
11、=1; if(0=odd_even) oeflag=0; /*/ /*CCD*/ /Initiate A/D registers void ini_AD(void) ATD0CTL2=0xC0; ATD0CTL3=0x08; ATD0CTL4=0x81; ATD0CTL5=0xA0; ATD0DIEN=0x00; XI第 頁 /Scan the CCD image void ccd_sc(void) r_chg=0; while(r_chg<26-interval) if(1=hs) clr_hs=1; r_chg+; line=0; r_chg=0; for(row=1;row<
12、=r_max;) if(1=hs) clr_hs=1; r_chg+; if(r_chg>=interval) ini_AD(); for(line=0;line<l_max;line+) while(!ATD0STAT1_CCF0); ccdline=video; line=6; row+; w_flgrow-1=0; r_chg=0; ATD0CTL2=0x00; if(r_chg<interval-2)&&(line<l_max-3) ccd_drow-1line=ccdline; dif=ccdline-ccdline+3; if(0=w_flg
13、row-1) if(dif>latch) temp_uprow-1=line+3; w_flgrow-1=1; else 第XII頁 第十一章 總結 if(dif<latch_neg) y_uprow-1=temp_uprow-1; errrow-1=y_uprow-1-mid_P; w_flgrow-1=2; line+; if(1=odd_even) oeflag=1; if(0=odd_even) oeflag=0; int get_mid(char a, char b, char c) if(a>b) x=b; b=a; a=x; if(b>c) x=c; c=
14、b; b=x; if(a>b) x=b; b=a; a=x; return b; void ccd_deal(void) for(row=2;row<r_max-1;row+) temp_uprow=get_mid(y_uprow-1,y_uprow,y_uprow+1); for(row=2;row<r_max-1;row+) y_uprow=temp_uprow; XIII第 頁 if(1=odd_even) oeflag=1; if(0=odd_even) oeflag=0; /*/ /*/ /CCD module function void ccd_m(void) if(odd_even=1)&&(oeflag=0) /even field transfers to odd field oeflag=1; ccd_sc(); ccd_deal(); vhcl_pid(); if(odd_even=0)&&(oefl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB31/T 1010-2016商標代理服務規范
- DB31/ 836-2014制冷劑使用技術通則
- 車輛信息安全與數據保護技術考核試卷
- 2024年復烤煙葉項目投資申請報告代可行性研究報告
- 跨境電商貨物代理與清關服務合同
- 退運化妝品退運與化妝品檢測服務協議
- 智能玻璃廠智能質檢系統租賃與數據對接合同
- 新能源汽車節能駕駛培訓與維護服務合同
- 計算機四級信息技術法規題目解析
- 2025年中國薄膜分切行業市場前景預測及投資價值評估分析報告
- 2025-2030年中國磷酸行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025年市場營銷專業人才考核試題及答案
- 分居協議(模版)
- 經鼻高流量吸氧在五官科麻醉氣道管理中應用專家共識(2025版)解讀
- 深圳市住房公積金管理中心員額人員招聘真題2024
- 2025年全國國家版圖知識競賽題庫及答案
- 思南塘頭字牌僰的傳承
- 國家開放大學《會計學概論》章節測試參考答案
- 4、支氣管哮喘搶救流程
- 小升初個人簡歷表
- 監控系統工程量清單2
評論
0/150
提交評論