#include "N76E003.h" #include "Common.h" #include "Delay.h" #include "SFR_Macro.h" #include "Function_define.h" unsigned int pulse_width = 0; unsigned char rising_cap=1; #define LED_OFF 0 #define LED_FLASH_SLOW 1 #define LED_FLASH_NORMAL 2 #define LED_FLASH_FAST 3 #define LED_FLASH_ALL_FAST 4 unsigned char led_mod =0; unsigned int tick; UINT8 u8TH0_Tmp,u8TL0_Tmp; /************************************************************************************************************ * TIMER 0 interrupt subroutine ************************************************************************************************************/ void Timer0_ISR (void) interrupt 1 //interrupt address is 0x000B { // interrupt every 10ms //clr_TF0; TH0 = u8TH0_Tmp; TL0 = u8TL0_Tmp; tick++; switch(led_mod) { case LED_FLASH_SLOW: //one 1/4 second if(tick < 25) { set_P01; } else { clr_P01; } set_P00; set_P02; break; /* case LED_FLASH_NORMAL: break; case LED_FLASH_FAST: break; case LED_FLASH_ALL_FAST: break;*/ default: { clr_P00; clr_P01; clr_P02; } break; } if(tick>150) { tick = 0; } } /************************************************************************************************************ * Timer2 Capture interrupt subroutine ************************************************************************************************************/ void Capture_ISR (void) interrupt 12 { if(CAPCON0 & 0x01) { clr_CAPF0; } if(CAPCON0 & 0x02) { clr_CAPF1; pulse_width = C1H; pulse_width <<= 8; pulse_width |= C1L; if(pulse_width>24000) //1/16m = 0.0000000625 * 24000 ==1500 { led_mod = LED_FLASH_SLOW; //set_P00; } else { led_mod = LED_OFF; // clr_P00; } } } /************************************************************************************************************ * Main function ************************************************************************************************************/ void main (void) { Set_All_GPIO_Quasi_Mode; // InitialUART0_Timer3(115200); P05_Input_Mode; //PWM Input P00_PushPull_Mode; P01_PushPull_Mode; P02_PushPull_Mode; clr_P00; clr_P01; clr_P02; TIMER0_MODE1_ENABLE; clr_T0M; //set div 12 10khz mode; u8TH0_Tmp = TIMER_DIV12_VALUE_10ms/256; //every 10 ms u8TL0_Tmp = TIMER_DIV12_VALUE_10ms%256; //every 10 ms TH0 = u8TH0_Tmp; //set time out TL0 = u8TL0_Tmp; TIMER2_CAP0_Capture_Mode; IC6_P05_CAP0_RisingEdge_Capture; IC6_P05_CAP1_FallingEdge_Capture; set_ET0; //enable Timer0 interrupt set_ECAP; //Enable Capture interrupt set_EA; set_TR0; //Timer0 run set_TR2; //Triger Timer2 while(1); }
收藏0 举报
磨砂 发表于 2024-5-6 13:19 有一部分代码好像使用的是汇编语言是吗
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
时间类勋章
人才类勋章
发帖类勋章
等级类勋章
71
617
0
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号