完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
/*---------------------------------------------------------------------------------------------------------*/
/* */ /* Copyright(c) 2019 Nuvoton Technology Corp. All rights reserved. */ /* */ /*---------------------------------------------------------------------------------------------------------*/ /***********************************************************************************************************/ /* Website: http://www.nuvoton.com */ /* E-Mail : MicroC-8bit@nuvoton.com */ /* Date : June/21/2019 */ /***********************************************************************************************************/ /************************************************************************************************************/ /* File Function: MS51 ADC / Bandgap input demo code */ /************************************************************************************************************/ #include "MS51_32K.h" /************************************************************************************************************/ /* PWM interrupt subroutine */ /************************************************************************************************************/ void PWM0_ISR (void) interrupt 13 { _push_(SFRS); clr_PWM0CON0_PWMF; // clear PWM interrupt flag _pop_(SFRS); } /************************************************************************************************************ * Main function ************************************************************************************************************/ void main(void) { /********************************************************************** PWM frequency = Fpwm/((PWMPH,PWMPL) + 1) = (16MHz/8)/(0x3FF + 1) = 2.7KHz ***********************************************************************/ ENABLE_PWM0_CH2_P05_OUTPUT; P05_PUSHPULL_MODE; PWM0_CH2_INTERRUPT_SELECT; PWM0_CLOCK_DIV_8; PWM0PH = 0x03; /*Setting PWM period */ PWM0PL = 0xFF; PWM0C2H = 0x0; /*PWM0 high duty = 1/2 PWM period */ PWM0C2L = 0xFF; ENABLE_PWM0_INTERRUPT; /*Enable PWM interrupt */ ENABLE_GLOBAL_INTERRUPT; set_PWM0CON0_LOAD; set_PWM0CON0_PWM0RUN; while(1); } |
|
相关推荐
1个回答
|
|
sp; * 说明:MS51单片机有4个中断源,可以使用中断功能。 *//*---------------------------------------------------------------------------------------------------------*/
MS51单片机的中断功能可以通过以下步骤实现: 1.设置中断源:MS51单片机有4个中断源,分别是外部中断0(INT0)、外部中断1(INT1)、定时器/计数器0中断(T0)和定时器/计数器1中断(T1)。需要根据实际需要选择中断源,并将其设置为中断触发源。例如,要设置外部中断0(INT0)为中断触发源,则可以使用以下代码: ``` c P3M0 = 0x08; // 将P3.3设置为上拉输入 P3M1 = 0x00; EX0 = 1; // 使能外部中断0 ``` 2.设置中断优先级:MS51单片机的中断优先级分为高、中、低3级。可以使用以下代码设置中断优先级: ``` c IP = 0x01; // 将中断优先级设为高 ``` 3.编写中断服务程序:中断服务程序是指在中断触发时要执行的程序。在MS51单片机中,中断服务程序通常采用函数的形式编写,并以特定的格式定义。例如,要编写外部中断0(INT0)的中断服务程序,可以使用以下代码: ``` c void exint0_isr(void) interrupt 0 { // 中断服务程序 } ``` 4.使能中断:最后一步是使能中断。在MS51单片机中,可以使用以下代码使能中断: ``` c EA = 1; // 使能总中断 ``` 当中断源触发时,中断程序会被执行,并在执行完毕后从中断返回到主程序。需要注意的是,在中断程序中不要做过多的耗时操作,以免影响系统的实时性能。 |
|
|
|
只有小组成员才能发言,加入小组>>
793 浏览 0 评论
1152 浏览 1 评论
2528 浏览 5 评论
2861 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2711 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1071浏览 3评论
194浏览 2评论
456浏览 2评论
369浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
454浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 20:12 , Processed in 1.050954 second(s), Total 79, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号