智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 3850|回复: 4
打印 上一主题 下一主题

各位帮忙看个程序DG128:PWM输出,ECT的输入扑捉,计算PWM输出的f,用LCD显示

[复制链接]

3

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
305
威望
235
贡献
56
兑换币
0
注册时间
2010-10-24
在线时间
7 小时
跳转到指定楼层
1#
发表于 2010-12-2 00:12:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序单步好像都没法运行下去,每次在LCD_init()处都会跳入一个好像什么背景调试模式
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#include<mc9s12dg128.h>
#define LCD_RS PORTB_BIT0
#define LCD_RW PORTB_BIT1
#define LCD_E  PORTB_BIT2
#define LCD_DB PORTA
void LCD_init(void);//初始化函数
void LCD_write_command(uchar command);//写指令函数
void LCD_write_data(uchar dat);//写数据函数
void delay_n1ms(uint n);//延时函数
void LCD_dis(void);
void PWM_init(void);
void measure_f(void);
//*****定义全局变量*****//
  int count=0;
  uchar f=2;
  long int  f1=2000000,N;
  int first=0,second=0;
//*****主函数****//
void main(void) {

  DDRA=0xFF;
  PORTA=0xFF;
  PUCR_PUPAE=1; //设置A口为LCD的数据口
  DDRB=0xFF;
  PORTB=0xFF;
  PUCR_PUPBE=1;
  
  PWM_init();
  PWME=0x01;
  
  PTT_PTT0=PTP_PTP0;
  
  DisableInterrupts;
  TSCR2=0x82;   //定时器中断使能位,定时器预分频系数=4;
  TIOS=0xFE;
  TCTL4=0x01;//扑捉上升沿
  ICSYS=0x0A;
  TIE=0x01;
  TSCR1=0x80;
  EnableInterrupts;
  LCD_init();   //LCD初始化
  for(;;){
  LCD_dis();    //LCD显示频率
  }
}
//*****PWM初始化函数*****//
void PWM_init(void){
  
  PWME=0x00;     //禁止PWM输出
  PWMCTL=0x00;   //通道不级联
  PWMPRCLK=0x66; //
  PWMCLK=0xFF;   //
  PWMSCLA=0x7D;  //
  PWMSCLB=0x7D;  //
  PWMPOL=0xFF;   //
  PWMCAE=0x00;   //
  PWMPER0=0x13;  //
  PWMDTY0=0x09;  //
}      
  

  
  
  
void LCD_dis(void){
    LCD_write_command(0x80);   
    LCD_write_data(f/100+0x30);
    LCD_write_data(f%100/10+0x30);
    LCD_write_data(f%100%10+0x30);
    LCD_write_data('H');
    LCD_write_data('Z');
    delay_n1ms(500);
   
}
//*******初始化函数*******//
void LCD_init(void) {
    LCD_write_command(0x38);//设置格式,2行,5*7
    delay_n1ms(1);
    LCD_write_command(0x0c);
    delay_n1ms(1);
    LCD_write_command(0x06);//显示地址加1模式
    delay_n1ms(1);
    LCD_write_command(0x01);//清除屏幕显示 r54
    delay_n1ms(1);
}  
//******写指令函数*******
void LCD_write_command(uchar command){
     delay_n1ms(1);
     LCD_DB=command;
     LCD_RS=0;
     LCD_RW=0;
     LCD_E=1;
     _asm(nop);
     _asm(nop);
     _asm(nop);
     LCD_E=0;
}            
//*****写数据函数*****//
void LCD_write_data(uchar dat) {
     delay_n1ms(1);
     LCD_DB=dat;
     LCD_RS=1;
     LCD_RW=0;
     LCD_E=1;
     _asm(nop);
     _asm(nop);
     _asm(nop);
     LCD_E=0;
}
//****延时函数****//
void delay_n1ms(uint n) {
  
  uint i,j;
  for(i=0;i<n;i++) {
   
    j=0x1300;
    while(j--);
  }
}
//void measure_f(void)
#pragma CODE_SEG_NEAR_SEG NON_BANKED
interrupt void CH0IC(void){

  first=TC0H;
  second=TC0;
  N=count*65536+second-first;
  f=f1/N;
  TFLG1=0x01;
  count=0;
}  
interrupt void TOI(void) {  
    count++;
    TFLG2_TOF=1;
  }

#pragma CODE_SEG DEFAULT

3

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
305
威望
235
贡献
56
兑换币
0
注册时间
2010-10-24
在线时间
7 小时
2#
 楼主| 发表于 2010-12-2 00:12:50 | 只看该作者
谢谢各位了
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

注册会员

Rank: 2

积分
164
QQ
威望
229
贡献
25
兑换币
0
注册时间
2010-9-27
在线时间
12 小时
3#
发表于 2010-12-3 18:54:38 | 只看该作者
lz嫁给我就帮你
回复 支持 反对

使用道具 举报

1

主题

21

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
381
QQ
威望
310
贡献
41
兑换币
0
注册时间
2010-12-31
在线时间
15 小时
4#
发表于 2011-6-19 21:36:14 | 只看该作者
求MC9S12DG128开发板的原理图,1181479390@qq.com
回复 支持 反对

使用道具 举报

10

主题

507

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2048
QQ
威望
1302
贡献
390
兑换币
8
注册时间
2011-2-25
在线时间
178 小时
5#
发表于 2011-9-18 18:39:40 | 只看该作者
这里面f1=2000000是什么意思哈?就是一开始初值的设置那里
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-27 03:29 , Processed in 0.113113 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表