کد:
$regfile = "m32def.dat"
$crystal = 1000000
'---------------------------------
Config Porta.5 = Output ' dio
Config Porta.6 = Output ' clk
Config Porta.7 = Output ' stb
Dio Alias Porta.5 'out data
Di Alias Pina.5 'in data for scan keys
Clk Alias Porta.6 'clock
Stb Alias Porta.7 ' select
Stb = 1
'---------------------------------
Declare Sub All_zero
Declare Sub Display_brightness
Declare Sub Show_number
Declare Sub Keyscan
'---------------------------------
Dim Bef1 As Byte
Dim Num As Byte '0- 255
Dim Pos As Byte '0-15
'---------------------------------
Dim Scan0(4) As Byte
Dim Key As Byte
Dim Brightness_level As Byte
Brightness_level = &B10001111 'no Display
'---------------------------------
Dim A As Byte
Dim Ali As Byte
'---------------------------------
Wait 1
Call All_zero
Call Display_brightness
Do
Incr A
Num = A
For Ali = 0 To 15
Pos = Ali
Call Show_number
Waitms 200
Next Ali
Wait 1
Loop
End
'**********************************************************
Sub All_zero
Reset Stb
Bef1 = $40
Shiftout Dio , Clk , Bef1 , 2
Set Stb
Reset Stb
Bef1 = 0
For Ali = 0 To 15
Shiftout Dio , Clk , Bef1 , 2
Next Ali
Set Stb
End Sub
'**********************************************************
Sub Display_brightness
Reset Stb
Shiftout Dio , Clk , Brightness_level , 2
Set Stb
End Sub
'**********************************************************
Sub Show_number
Reset Stb
Bef1 = $44
Shiftout Dio , Clk , Bef1 , 2
Set Stb
Reset Stb
Pos = $c0 + Pos
Shiftout Dio , Clk , Pos , 2
Shiftout Dio , Clk , Num , 2
Set Stb
End Sub
'**********************************************************
Sub Keyscan
Reset Stb
Bef1 = $42
Shiftout Dio , Clk , Bef1 , 2
ddra.5=0
Shiftin Di , Clk , Scan0(1) , 2
Shiftin Di , Clk , Scan0(2) , 2
Shiftin Di , Clk , Scan0(3) , 2
Shiftin Di , Clk , Scan0(4) , 2
Set Stb
ddra.5=1
Key.0 = Scan0(1).0
Key.1 = Scan0(2).0
Key.2 = Scan0(3).0
Key.3 = Scan0(4).0
Key.4 = Scan0(1).4
Key.5 = Scan0(2).4
Key.6 = Scan0(3).4
Key.7 = Scan0(4).4
End Sub