Dim A As Byte , B As Byte , I As Byte , E As Byte '定义BCD变化数据,A为十位,B为个位
Dim A1 As Byte , B1 As Byte
Dim C As Word , D As Word '定义转换变量及计时参数
Dim M As Bit '定义PWM变化标志位
Dim N As Bit '定义扫描显示标志
Dim S(3) As Byte '定义扫描显示的位数据
Dim X(16) As Byte '定义LED显示字符表
Restore Daima
For I = 0 To 15
Read X(i)
Next I
A = 0 '初始值为0
B = 0
M = 1
Set N
Do
If M = 1 Then '如果M=1,表示0-99有变化
Reset M 'M清0,等待下一次变化
S(1) = X(b) '查个位显示码
S(2) = X(a) '查十位显示码
C = A * 10
C = C + B '将2位0-99的百分比BCD码转换为一字节数
D = C * 255
D = D / 100
Pwm1a = D '转换后的数据从PWM输出
End If
Loop
'//////////////定时器0中断服务程序///////////////
Tim0_isr: 'timer0中断服务
Load Timer0 , 125 '重装初值
If E >= 50 Then '软件计数到40为1秒
E = 0
Set M '置数据变化标志
B = B - 1 '每秒占空比增加1
If B >= 10 Then
B = 9
A = A - 1 '十进制进位
If A >= 10 Then A = 9
End If
End If
E = E + 1
Return '中断服务程序结束
'//////////////定时器2中断服务程序//////////////
Tim2_isr: 'timer2比较匹配中断服务
Load Timer2 , 250
If N = 0 Then
Portc = S(1)
Set Portb.7 : Reset Portb.6 '显示个位
Set N
Else
Portc = S(2)
Reset Portb.7 : Set Portb.6 '显示十位
Reset N
End If
Return '中断服务程序结束