完善资料让更多小伙伴认识你,还能领取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; // 使能总中断 ``` 当中断源触发时,中断程序会被执行,并在执行完毕后从中断返回到主程序。需要注意的是,在中断程序中不要做过多的耗时操作,以免影响系统的实时性能。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
1022 浏览 1 评论
1852 浏览 0 评论
1833 浏览 1 评论
3258 浏览 5 评论
3585 浏览 9 评论
1025浏览 1评论
1853浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
1364浏览 1评论
1855浏览 0评论
1180浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 17:20 , Processed in 0.641733 second(s), Total 76, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
402