关于stm8s定时器输出波形不能更新并出现乱波

就是想写个sif协议,用定时器,1ms进一次中断,电平翻转,但是波形状态不更新,只能发一个位,发不了一个字节,stm8s005
主函数
#include "system.h"

extern void GPIO_Init (void);
extern void TIM1_Init (void);
void send_bit(uchar);
void send_byte(uchar);
uchar temp=2,count;

void Clock_Init(void)
{
CLK_ICKR |= 0x01;//使能HSI时钟
CLK_ECKR &= 0x00;//关闭外部时钟
CLK_CKDIVR = 0x00;//设置时钟为16MHZ
}

int main()
{
Clock_Init();
GPIO_Init();
TIM1_Init();
_asm("rim");
while (1);
}

@far @interrupt void TIM1_update_overflow_underflow_trigger_break (void)
{
TIM1_SR1 &= 0x00;
if(temp<2)
{
send_bit(temp);
temp++;
}
else
{
temp=0;
send_bit(temp);
temp++;
}
}

void send_bit(uchar temp)
{
switch(temp)
{
case 0 :
if(count < 96)count ++;
else
{
count = 1;

    }

    if(count < 65)
    {
        PA_ODR &= 0xdf;//1ms
    }
    else 
    {        
        PA_ODR |= 0x20;//1ms
    }
    break;
    
    
    case 1 :
    if(count < 96)count ++;
    else 
    {
        count = 1;
    
    }

    if(count < 33)
    {
        PA_ODR &= 0xdf;//1ms
    }
    else 
    {        
        PA_ODR |= 0x20;//1ms
    }
    break;
    
    
    case 2 :
    if(count < 96)count ++;
    else 
    {
        count = 1;
    
    }

    if(count < 94)
    {
        PA_ODR &= 0xdf;//1ms
    }
    else 
    {        
        PA_ODR |= 0x20;//1ms
    }
    break;
}

}

定时器1函数
#include "system.h"

void GPIO_Init(void)
{
PA_DDR |= 0x20;//设置PA5为输出模式
PA_CR1 |= 0x20;//设置PA5为推挽输出模式
PA_CR2 |= 0x20;//设置输出频率为10MHZ
}

void TIM1_Init(void)
{
_asm("sim");//关闭总中断
TIM1_CR1 &= 0x00;//CR1初始化
TIM1_IER &= 0x00;//中断使能寄存器初始化

TIM1_EGR |= 0x01;//产生更新时事件

TIM1_PSCRH = 83/256;//PSCR高八位处理
TIM1_PSCRL = 83%256;//PSCR低八位处理

TIM1_CNTRH = 0x00;//计数器高八位置0
TIM1_CNTRL = 0x00;//计数器低八位置0

TIM1_ARRH = 0x00;//自动装载寄存器为20
TIM1_ARRL = 0x01;

TIM1_CR1 |= 0x81;//自动装载使能,计数器使能
TIM1_IER |= 0x01;//定时器更新中断使能
TIM1_SR1 |= 0x00;

}

更改为TIM_CH1模式,再次烧录

PA5脚上电压应该会有变化的,排查一下定时器是否每次都有进中断。