電磁組程序(20211201072045)_第1頁
電磁組程序(20211201072045)_第2頁
電磁組程序(20211201072045)_第3頁
電磁組程序(20211201072045)_第4頁
電磁組程序(20211201072045)_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、#include /- static void port_init(void) ddra = 0 x00; pucr_pupke=0 xff; ddrb = 0 x00; /led ptb0-7, pucr_pupbe=0 xff; /leds on ddre=0 xff; perh = 0 xff; /key ptih= 0 x00; / /- static void pwm_init(void) /pwm0.pwm1 pwmctl_con01=1; /0 和 1 聯合成 16 位 pwm ;pwmcae_cae1=0; /選擇輸出模式為左對齊輸出模式pwmcnt01 = 0; /計數器清零

2、;pwmpol_ppol1=1; /先輸出高電平,計數到dty 時,反轉電平pwmprclk = 0x40; /clocka 不 分 頻 ,clocka=busclock=16mhz;clk b 16 分頻:1mhz pwmscla = 0 x08; /對 clock sa 16 分頻 ,pwm clock=clocka/16=1mhz; pwmclk_pclk1 = 1; /選擇 clock sa 做時鐘源pwmper01 = 20000; /周期 20ms; 50hz;(可以使用的范圍:50-200hz) pwmdty01 = 1150; /高電平時間為1.5ms; pwme_pwme1

3、= 1; /pwm2.pwm3 pwmctl_con23=1; /0 和 1 聯合成 16 位 pwm ;pwmcae_cae3=0; /選擇輸出模式為左對齊輸出模式pwmcnt23 = 0; /計數器清零;pwmpol_ppol3=1; /先輸出高電平,計數到dty 時,反轉電平pwmprclk = 0x40; /clockb 不 分 頻 ,clocka=busclock=16mhz;clk b 16 分頻:1mhz pwmsclb = 0 x08; /對 clock sb 16 分頻 ,pwm clock=clocka/16=1mhz; pwmclk_pclk3 = 1; /選擇 cloc

4、k sb 做時鐘源pwmper23 = 200; /周期 20ms; 50hz;(可以使用的范圍:50-200hz) pwmdty23 = 100; /高電平時間為1.5ms; pwme_pwme3 = 1; /pwm6.pwm7 pwmctl_con67=1; /0 和 1 聯合成 16 位 pwm ;pwmcae_cae7=0; /選擇輸出模式為左對齊輸出模式pwmcnt67 = 0; /計數器清零;pwmpol_ppol7=1; /先輸出高電平,計數到dty 時,反轉電平pwmprclk = 0x40; /clockb 不 分 頻 ,clocka=busclock=16mhz;clk b

5、 16 分頻:1mhz pwmsclb = 0 x08; /對 clock sb 16 分頻 ,pwm clock=clocka/16=1mhz; pwmclk_pclk7 = 1; /選擇 clock sb 做時鐘源pwmper67 = 200; /周期 20ms; 50hz;(可以使用的范圍:50-200hz) pwmdty67 = 100; /高電平時間為1.5ms; pwme_pwme7 = 1; void setbusclk_16m(void) clksel=0x00; /disengage pll to system pllctl_pllon=1; /turn on pll syn

6、r=1; refdv=1; /pllclock=2*osc*(1+synr)/(1+refdv)=32mhz; _asm(nop); /bus clock=16m _asm(nop); while(!(crgflg_lock=1); /when pll is steady ,then use it; clksel_pllsel =1; /engage pll to system; void setbusclk_32m(void) clksel=0x00; /disengage pll to system pllctl_pllon=1; /turn on pll synr=3; refdv=1;

7、 /pllclock=2*osc*(1+synr)/(1+refdv)=64mhz; _asm(nop); /bus clock=32m _asm(nop); while(!(crgflg_lock=1); /when pll is steady ,then use it; clksel_pllsel =1; /engage pll to system; /- #pragma code_seg default void init_dev(void) setbusclk_16m(); port_init(); pwm_init(); /- /* - */ #include #include #i

8、nclude #include lijinit.h #pragma link_info derivative mc9s12dg128b void shijian(void); void chaopin(void); /超頻程序void tim_init(void);/定時程序int chesudu; void dly_ms(int ms) int ii,jj; if (ms1) ms=1; for(ii=0;iims;ii+) for(jj=0;jj2770;jj+); /32mhz-1ms /- byte scan_key(void) dly_ms(10); if(porta_pa0=1)

9、return o; / ok else if(porta_pa1=1) return c; / esc else if(porta_pa2=1) return d; / down else if(porta_pa3=1) return r; / right else if(porta_pa4=1) return l; / left else if(porta_pa5=1) return u; / else if(portb_pb1=1) return a; / / else if(portb_pb1=0) return b; / /* if(ptih_ptih7=0) return o; /

10、ok else if(ptih_ptih6=0) return c; / esc else if(ptih_ptih5=0) return d; / down else if(ptih_ptih4=0) return r; / right else if(ptih_ptih3=0) return l; / left else if(ptih_ptih2=0) return u; / else if(ptih_ptih1=0) return a; / else if(ptih_ptih0=0) return b; / */ else return 0 xff; byte u8_rcv_ch=0

11、xff; a void chaopin(void)/64m clksel=0x00; pllctl_pllon=1; synr =0 xc0 | 0 x07; refdv=0 xc0 | 0 x01; postdiv=0 x00; _asm(nop); _asm(nop); _asm(nop); _asm(nop); while(!(crgflg_lock=1); clksel_pllsel =1; void tim_init(void) pactl=0x50; /端口初始化pacnt=0x0000; void shijian(void) pitcflmt_pite=0; pitce_pce0

12、=1; pitld0=9999; /1 毫秒pitmtld0=5; pitmux=0x00; pitinte_pinte0=1; pitcflmt_pite=1; /= 速度采集中斷函數,已經完全可以采集速度的= #pragma code_seg non_banked void interrupt 66 pit0interrupt(void)/測速的中斷程序 chesudu=pacnt;/ 車速度值pittf_ptf0=1; pacnt=0x0000; #pragma code_seg default /=中斷函數 = /=main()= #pragma code_seg default vo

13、id main(void) byte u8_key=0; chaopin(); / 超頻函數初始化shijian() ; tim_init();/計數器函數初始化init_dev(); /dly_ms(2000); /dly_ms(2000); enableinterrupts; for(;) pwmdty23 = 190; pwmdty67 =200; /- 小鍵盤功能部分- if(u8_key=scan_key()!=0 xff) u8_rcv_ch=u8_key; switch(u8_rcv_ch) case l: pwmdty01=1100; pwmdty67=200; pwmdty2

14、3=100; porte_pe0=1; break; case r: pwmdty01=1185; pwmdty67=200; pwmdty23=100; porte_pe0=1; break; case u: pwmdty01=1000; pwmdty67=200; pwmdty23=100; porte_pe0=1; break; case d: pwmdty01=1225; pwmdty67=200; pwmdty23=100; porte_pe0=1; break; case o: pwmdty01=1360; pwmdty67=200; pwmdty23=100; porte_pe0=1; break; case c: pwmdty01=1225; pwmdty67=200; pwmdty23=100; porte_pe0=1; break; case r&d: pwmdty01=1185; pwmdty67=200; pwmdty23=100; porte_

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論