欢迎来到天天文库
浏览记录
ID:9848383
大小:37.00 KB
页数:6页
时间:2018-05-12
《飞思卡尔mc9s12单片机实验程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、定时器模块1:输出比较定时器延时,中断点亮led灯#include/*commondefinesandmacros*/#include/*derivativeinformation*///voidinterrupt8aabreak(void);//此行可以注释掉*******unsignedintflag=0;voidmain(void){EnableInterrupts;TFLG1=0x01;//清中断标志位DDRB=0xff;PORTB=0xff;//将B口定义为输出,首先输出全0TSCR1=0x80;//定时
2、器使能,正常工作TSCR2=0x01;//将定时器进行128分频最高位不要开********TIE=0x01;//定时器0的中断使能TIOS=0x01;//将定时器设置为输出比较状态TCTL2=0x00;//定时器与引脚断开TFLG1=0x01;//清中断标志位TC0=0x00f0;//给定时器赋值for(;;);}#pragmaCODE_SEGNON_BANKEDvoidinterrupt8aabreak(void)//中断号要正确,是中断8(从0通道开始算起的){TFLG1=0x01;//清中断标志位if(flag==0){PORTB=0xaa;flag=1
3、;}else{PORTB=0x55;flag=0;}TC0=0x00f0;//给定时器赋值}2:输入捕捉PORTA输出脉冲,有定时器通道0对脉冲进行计数,结果从PORTB输出。#include/*commondefinesandmacros*/#include/*derivativeinformation*/unsignedintnumber=0;//脉冲计数初值为0/***********初始化**********/voidinit(){EnableInterrupts;DDRA=0xff;//将A口定义为输出,
4、用于输出脉冲DDRB=0xff;//B口用于输出脉冲值PORTB=0xff;//led灯全暗TIOS=0x00;//设置定时器通道0为输入捕捉TSCR1=0x80;//定时器使能TSCR2=0x01;//设置自由计数器2分频,且禁止定时器溢出中断TCTL4=0x02;//捕捉器仅下降沿捕捉TIE=0x01;//允许定时器通道0的中断TFLG1=0x01;//清除中断标志位}/*********用于产生脉冲*******/voidpulse(){unsignedinti,j;PORTA=0xff;//将A口输出高电平for(i=0;i<10000;i++)for(
5、j=0;j<100;j++);//延时PORTA=0x00;//使A口输出低电平}/********主函数*********/voidmain(void){init();for(;;){pulse();}}/*******中断子函数******/#pragmaCODE_SEGNON_BANKEDvoidinterrupt8count(){TFLG1=0x01;//中断标志位清0number++;//计数值加1PORTB=~(number);//B口输出计数值}模数转换模块(硬件未完成,以后补充。。。。)PWM模块#include/*common
6、definesandmacros*/#include/*derivativeinformation*/#pragmaLINK_INFODERIVATIVE"mc9s12db128b"voidinit(){DDRB=0xff;//定义B口为输出状态PORTB=0x00;//led灯全部为暗DDRA=0x00;//定义A口为接受状态PWME=0x00;//首先禁止pwm输出PWMCTL=0x00;//PWM不级联PWMPRCLK=0x77;//CLOCKA,CLOCKB分频PWMCLK=0xff;//都选择CLOCKSA和CLOCKSB
7、作为时钟源PWMSCLA=0xff;PWMSCLB=0xff;//再次分频、PWMPOL=0xff;//设置pwm周期开始为高电平PWMCAE=0x00;//选择左对齐方式PWMPER0=0xfe;//选择周期PWMDTY0=0xfe;//占空比PWME=0x01;//启动通道0的pwm输出}voidfun(){if(PORTA_BIT5==1){PORTB=0x00;//如果此时pwm输出高电平,则点亮led灯}else{PORTB=0xff;//如果此时pwm输出低电平,则熄灭led灯}}voidmain(void){DDRB=0xff;PORTB=0x00
8、;for(;;){fun
此文档下载收益归作者所有