用STM8单片机的定时器实现一个检测几路LED中出现故障程序
来源:互联网 发布:身份证号码找人软件 编辑:程序博客网 时间:2024/05/23 01:58
最近公司在给一家地铁公司做一个地铁转向灯控制器项目,其中要用STM8单片机实现一个功能,先上原理图一会再描述功能。
功能描述:
1. 当A1(PD4)为高电平时,B1(PC5)和B11(PC7)输出闪烁信号,驱动转向灯或继电器
2. 当A2(PD5)为高电平时,B2(PC6)和B22(PD2)输出闪烁信号,驱动转向灯或继电器
3. 当HF(PD6)为高电平时,B1、B2、B11、B22输出闪烁信号,驱动转向灯或继电器
4. 闪烁频率1至1.5Hz
控制器将对输出端口进行检测;当输出的电流小于一个灯的电流时,闪烁频率会加倍;以此来通知驾驶室,有指示灯损坏。
这个主要是检测控制端口PC4脚的电平变化,当小于一个灯的电路的时候,说明负载功率变小,LED闪烁频率变快,从而断定有故障发生。
这里以PC6脚单路输出作为测试。
程序流程图如下:
时间1指的时间计数器1,时间2指的时间计数器2.
程序如下:
#include "IOSTM8S103F3.h"#define u8 unsigned char#define u16 unsigned int#define JC (PC_IDR&0x10)>>4 //读取PC4脚的信号void Delay_ms(u16 ms){ u16 i,j; for(i=ms;i>0;i--) for(j=0;j<1600;j++);}u8 i=0;u8 t=0;u8 num=100;u8 temp=0;u8 temp1=0;void Init_Timer4(void){ TIM4_CR1=0x01; //使能计数器 TIM4_IER=0x01; //更新中断使能 TIM4_EGR=0x01; //允许产生更新事件 TIM4_CNTR=255; //计数器初值装载 TIM4_ARR=255; //自动重装载的值 TIM4_PSCR=0x07; //预分频,计数器时钟频率F_ck_cnt=F_ck_psc/2^(psc(0:2))}void Init_GPIO(void){ PC_DDR|=0x40; //PC6输出模式 PC_CR1|=0x40; //PC6推挽输出 PC_DDR&=0xef; //PC4输入模式 PC_CR1&=0xef; //PC4浮空输入 PC_CR2|=0x00; PC_CR2&=0xef;}#pragma vector=TIM4_OVR_UIF_vector__interrupt void TIM4_OVR_UIF_IRQHandler(void){ i++; TIM4_SR=0x00; //清除中断 if(i==num) { PC_ODR^=0x40; i=0; } t++; if(JC==0x01) temp=1; if(t==20) { t=0; if(temp!=1) { num=100; temp1=0; } temp=0; } //return;}int main( void ){ Init_GPIO(); Init_Timer4(); asm("rim"); while(1) { if(temp1!=1) { if(JC==0x01) { temp1=1; num=10; i=0; } } }}
用到定时/计数器的中断。
0 0
- 用STM8单片机的定时器实现一个检测几路LED中出现故障程序
- STM8系列单片机复用引脚烧写程序注意事项
- 【定时器/中断/PWM】利用一个定时器实现一路PWM波的输出---点亮LED
- 单片机的led跑马灯程序
- 【单片机】[LED]:LED 不用频率闪烁的程序
- 单片机中一个程序的运行过程
- 单片机中定时器的使用
- 单片机的电流检测程序
- 51单片机实现LED的PWM效果
- STM8单片机的启动过程。
- STM8单片机的中断优先级
- 用链表+函数指针+定时器中断实现的一个软件定时器(试用于所有单片机)
- STM8 LED
- 一个半夜出现的故障。。
- STM8 TIM2 定时器的问题
- stm8——LED流水灯实现
- stm8单片机开发及程序下载
- 单片机定时驱动led程序2--c语言实现
- ubuntu安裝 install sbt
- test
- 【J2EE浅析】——JDBC
- 千山万水之Hibernate(五)——关联映射(一对一)
- cmake --help-html
- 用STM8单片机的定时器实现一个检测几路LED中出现故障程序
- LeetCode_Palindrome Number
- iOS手势
- TCP 登录实现代码
- supervisor管理tornado项目,参数丢失【待解决】
- Java中控制double类型小数点后位数的方法
- stm32f4 discovery开发板usb全速修改测试
- 欧拉工程第19题
- HDU 1049 Climbing Worm