?? main.lst
字號:
1 ;==========================================================
2 ;
3 ; 模塊: FM發射模塊控制代碼
4 ;
5 ; 版本: 1.01
6 ;
7 ; 日期: 2007-7-28
8 ;
9 ; 作者: 施探宇
10 ;
11 ; 說明: Zi2020 應用圖
12 ;
13 ; +-----+
14 ; (106.7)P5.0 ===| |=== P5.1(PREV KEY)(POWER KEY)
15 ; (107.1)P6.7 ===| |=== P5.2(NEXT KEY)
16 ; (107.5)P6.6 ===| |=== P5.3(CE,Zi2020 高打開)
17 ; Vdd ===| |=== Vss
18 ; (107.9)P6.5 ===| |=== P6.0(音頻檢測)
19 ; FM LED)P6.4 ===| |=== P6.1(SDA,Zi2020)
20 ; (NC)P6.3 ===| |=== P6.2(SCL,Zi2020)
21 ; +-----+
22 ;
23 ;==========================================================
24 include "reg.inc"
1 C ;=====================================================
2 C ; 寄存器
3 C ;=====================================================
4 0000 C R0 equ 0X00
5 0001 C R1 equ 0x01
6 0001 C TIME_COUNT equ 0x01
7 0002 C PC equ 0x02
8 0003 C FLAG equ 0x03
9 0004 C R4 equ 0x04
10 0005 C P5 equ 0x05
11 0006 C P6 equ 0x06
12 000F C INT_STATU equ 0x0f
13 C ;----------------------------------------------------------
14 C ;AUX REG
15 C
16 0001 C INTCON equ 0x01
17 0005 C P5CON equ 0x05
18 0006 C P6CON equ 0x06
19 000B C IOCB equ 0x0B
20 000B C IO_DOWN equ 0x0B
21 000C C IOCC equ 0x0C
22 000D C IOCD equ 0x0D
23 000D C IO_UP equ 0x0D
24 000E C WTDCON equ 0x0E
25 000F C INT_MAST equ 0x0F
26 C
27 C
28 C
29 C ;---------------------------------------------------------
30 0000 C C equ 0x00
31 0001 C DC equ 0x01
32 0002 C Z equ 0x02
33 C
34 0007 C WTD_BIT equ 0x07
35 0006 C P60_BIT equ 0x06
36 C
37 C ;中斷標志位
38 0000 C TC_FLAG_BIT equ 0x00
39 0001 C P6_FLAG_BIT equ 0x01
40 0002 C EX_FLAG_BIT equ 0x02
41 C
42 C
43 C
44 C ; 自定義的變量
45 0010 C A_buff equ 0x10 ;A寄存器備份
46 C
47 C
48 C
49 C ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
50 C ;遙控
51 0011 C Remote_Address_Start equ 0x11
52 C
53 0011 C Status_1 equ Remote_Address_Start
54 0012 C Time_Int_Count equ Remote_Address_Start+1
55 0013 C Remote_Bit_Count equ Remote_Address_Start+2
56 0014 C Remote_Cmd_Code1 equ Remote_Address_Start+3
57 0015 C Remote_Cmd_Code0 equ Remote_Address_Start+4
58 0016 C Remote_Sys_Code1 equ Remote_Address_Start+5
59 0017 C Remote_Sys_Code0 equ Remote_Address_Start+6
60 0018 C Time_Delay equ Remote_Address_Start+7
61 0019 C Time_Delay1 equ Remote_Address_Start+8
62 001A C Ir_Repeat_Times equ Remote_Address_Start+9
63 001B C Current_Key equ Remote_Address_Start+10
64 C
65 C
66 0000 C STATE_9M_BIT equ 0x00
67 0001 C STATE_2M_BIT equ 0x01
68 0003 C KEY_VALID_BIT equ 0x03
69 0004 C IR_KEY_OK_BIT equ 0x04
70 0005 C IR_KEY_DOWN_UP_BIT equ 0x05
71 C
72 C ;*************************************************************************************
73 C ;ones 200us
74 005A C IR_TIME_9000US equ 90
75 002D C IR_TIME_4500US equ 45
76 0016 C IR_TIME_2250US equ 22
77 000B C IR_TIME_1125US equ 11
78 0006 C IR_TIME_560US equ 6
79 0001 C IR_TIME_MARGIN equ 1
80 C ;*************************************************************************************
81 C
82 C
83 002D C AudCnt3 equ 0x2d
84 C
85 002E C pop_statu equ 0x2e
86 002F C pop_a equ 0x2f
87 C
25 include "ir_code.inc"
1 0060 C HOLD_KEY_ADDR equ 0x60
2 C
3 C
4 0000 C IR_VOL_UP equ 0x00
5 0000 C IR_VOL_DOWN equ 0x00
6 0000 C IR_VOL_FF equ 0x00
7 C
8 C
9 C
10 C
11 C
26 ;===========================================================
27 ; Start()
28 ;===========================================================
29 ORG 0x00
30 0000 1420 jmp Start
31
32 ORG 0x01
33 0001 0013 reti
34 ORG 0x08
35 0008 0011 DISI
36 0009 0C0F jbc INT_STATU,@TC_FLAG_BIT ;計時中斷
37 000A 1427 jmp Time_Int
38 000B 0C8F jbc INT_STATU,@EX_FLAG_BIT ;外部中斷p60
39 000C 144C jmp Exent_Int0
40 000D 0C4F jbc INT_STATU,@P6_FLAG_BIT ;腳位變化中斷
41 000E 1444 jmp Exent_Int1
42 000F 0013 reti
43
44
45 ;------------------------------
46 ; 程序開始
47 ;------------------------------
48 ORG 0x20
49 0020 Start:
50 0020 0011 DISI ;禁止中斷
51 0021 1098 call Init_Con_reg ;初始化控制寄存器
52 0022 1086 call CleanRam ;清除寄存器
53 0023 1091 call Init_Ioport ;初始化輸入輸出口
54 0024 0010 ENI ;開中斷
55 ;===========================================================
56 ; main()
57 ;===========================================================
58 0025 main:
59
60
61
62 0025 10B4 call Get_Remote_Key ;獲得遙控按鍵
63
64 ;call delay_1s
65 ;mov a,@0x80
66 ;xor P6,a
67
68
69
70
71
72
73
74 0026 1425 jmp main
75 ;===========================================================
76 ; main end
77 ;===========================================================
78
79
80
81
82 ;==============================================================================================
83 ;計時中斷時間== (4*(256-TIME_COUNT)*時鐘周期)/fos(晶振頻率)
84 ;100us int ones
85 ;==============================================================================================
86 0027 Time_Int:
87 ;------------------------------
88 ; 保存狀態寄存器
89 ;------------------------------
90 0027 006F mov pop_a,a
91 0028 0403 mov a,FLAG
92 0029 006E mov pop_statu,a
93
94 ;------------------------------
95 ; 設定每次中斷時長
96 ;------------------------------
97 002A 18D1 mov a,@209d
98 002B 0041 mov TIME_COUNT,a
99 ;------------------------------
100 ;超過120毫秒后表示遙控按鍵己彈起
101 ;------------------------------
102 002C 0552 inc Time_Int_Count
103 002D 0558 inc Time_Delay
104 002E 0418 mov a,Time_Delay
105 002F 1D3C sub a,@60d
106 0030 0E83 jbs FLAG,@Z
107 0031 143F jmp return_t_int
108 0032 0559 inc Time_Delay1
109 0033 00D8 clr Time_Delay
110
111 0034 0419 mov a,Time_Delay1
112 0035 1D14 sub a,@20d
113 0036 0E83 jbs FLAG,@Z
114 0037 143F jmp return_t_int
115 0038 00D9 clr Time_Delay1
116 0039 00D8 clr Time_Delay
117 003A 0411 mov a,Status_1
118 003B 1AFC and a,@0xFC
119 003C 0051 mov Status_1,a
120 ;clr Ir_Repeat_Times
121 003D 0951 bc Status_1,@IR_KEY_DOWN_UP_BIT ;按鍵彈起
122 003E 0811 bc Status_1,@STATE_9M_BIT ;
123
124 003F return_t_int:
125
126
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -