📄 main.lst
字号:
FM8P5X Compiler 1.2 Released D:\Documents and Settings\Administrator\桌面\项目资料\无线发射方案\FM transmitter_8\main.asm 2006-9-11 16:04:28
LOC LINE SOURCE TEXT
0001 ;**********************************************
0002 ;function description: FM Transmitter
0003 ;written by:ye jiawei , Dong Shuilian, Kong xiangyue
0004 ;IC body:AT8P53 BH1415
0005 ;***********************************************
0006 ;-------------RAM definition--------------------
0007 indf equ 000h
0008 tmr0 equ 001h
0009 pcl equ 002h
0010 ;---------------------------
0011 status equ 003h
0012 z equ 2
0013 c equ 0
0014 ;---------------------------
0015 fsr equ 004h
0016 porta equ 005h
0017 portb equ 006h
0018
0019 pcon equ 008h
0020 wucon equ 009h
0021 pchbuf equ 00ah
0022 pdcon equ 00bh
0023 odcon equ 00ch
0024 phcon equ 00dh
0025 inten equ 00eh
0026 intflag equ 00fh
0027 ;-------------------------------------------------
0028 portb_state equ 010h
0029 store_channel equ 011h
0030 channel equ 012h
0031 send_date_low equ 013h
0032 SendBuf equ 014h
0033 second_count equ 015h
0034 ACCTemp equ 016h
0035 StatusTemp equ 017h
0036 ;---------------------------------
0037 flag equ 018h
0038 key_yes equ 7
0039 ;-----------------------------------
0040 temp equ 019h
0041 temp0 equ 01ah
0042 Bits equ 01bh
0043 count1 equ 01ch
0044 count2 equ 01dh
0045 BH1415_State equ 01Eh
0046 ;store_channel equ 03fh
0047 flg_eep_error equ 03eh
0048 cnt_eep_wr_error equ 03dh
0049 cnt_eep_error equ 03ch
0050 eep_data_tmp equ 03bh
0051 eep_data_writen equ 03ah
0052 ;prtb_state equ 039h
0053 value_temp equ 038h
0054
0055 ;-------------------Constants-----------------
0056 ;chan1 equ 08bh ;89.5M/100k=895 37fh
0057
0058 ;chan2 equ 08ch ;95.5M/100k=955 38ch
0059 ;chan3 equ 08eh ;91.0M/100k= 38eh
0060 ;chan4 equ 08fh ;91.1M/100k=91.1 38fh
0061 ;chan5 equ 090h ;91.2M/100k=912 390h
0062 ;chan6 equ 091h ;91.3M/100k=913 391h
0063 ;chan7 equ 092h ;91.4M/100k=914 392h
0064 ;chan8 equ 093h ;91.5M/100k=915 393h
0065
0066 ;chan1 equ 0ach ;94M/100k=940 3ach
0067 ;chan2 equ 0bbh ;95.5M/100k=955 3bbh
0068 ;chan3 equ 0dah ;98.6M/100k=98.6 3dah
0069 ;chan4 equ 0e8h ;100.0M/100k=1000 3e8h
0070 ;chan5 equ 0f7h ;101.5M/100k=1015 3f7h
0071 ;chan6 equ 0fbh ;101.9M/100k=1019 3fbh
0072 ;chan7 equ 0fdh ;102.1M/100k=1021 3fdh
0073 ;chan8 equ 0ffh ;102.3M/100k=1000 3ffh
0074
0075 chan1 equ 071h ;88.1M/100k=881 371h
0076 chan2 equ 073h ;88.3M/100k=883 373h
0077 chan3 equ 075h ;88.5M/100k=885 375h
0078 chan4 equ 077h ;88.7M/100k=887 377h
0079
0080 chan5 equ 079h ;88.9M/100k=889 379h
0081 chan6 equ 07bh ;89.1M/100k=891 37bh
0082 chan7 equ 07dh ;89.3M/100k=893 37dh
0083 chan8 equ 07fh ;89.5M/100k=895 37fh
0084 send_date_high equ 04bh ;lsb-- 11010010-- msb === 4Bh
0085 ON equ 01h
0086 OFF equ 00h
0087
0088 ;####################################################################
0089 org 000h
0000 0090 goto Start
0091 org 002h
0002 0092 retfie
0093 org 008h
0094 ; retfie
0008 0095 goto PB_TM0_Interrup
0096
0097 PB_TM0_Interrup:
0009 0098 btrss intflag,0 ;是TMR0引起的中断吗?
000A 0099 goto PB_Interrup
0100
0101 TM0_Interrup:
0102 ;CLRWDT
000B 0103 movar ACCTemp ;save ACC
000C 0104 movr status,0
000D 0105 movar StatusTemp ;save Status
0106
000E 0107 bcr intflag,0 ;清除计时器中断标志
000F 0108 incr second_count,1 ;定时计数器加1
0109
0010 0110 movr StatusTemp,0
0011 0111 movar status ;pop Status
0012 0112 movr ACCTemp,0 ;pop ACC
0013 0113 retfie
0114
0115 PB_Interrup:
0014 0116 bcr intflag,1 ;清除PB输入改变中断标志
0117
0015 0118 retfie
0119 ;-------------------------------------------------------------------
0120 Start:
0121 ;CLRWDT
0016 0122 call ClrRAM ;清除内存
0017 0123 call Define_Register ;初始化特定功能寄存器
0018 0124 call read_eep_1byte; 读I2c ,eep_data_tmp寄存所读数据
0019 0125 movr eep_data_tmp,0
001A 0126 movar store_channel
001B 0127 movia 0ffh
001C 0128 xorar store_channel,0
001D 0129 btrss status,z
001E 0130 goto i2c_full
0131
0132 i2c_empty:
001F 0133 movia 1
0020 0134 movar channel
0021 0135 movar store_channel
0022 0136 movar eep_data_writen
0023 0137 call write_eep_1byte ;写 I2c
0024 0138 goto send_date_light_led0
0139
0140 i2c_full:
0025 0141 movr store_channel,0
0026 0142 movar channel
0143
0144 send_date_light_led0:
0027 0145 call send_date_light_led
0146
0147 main:
0028 0148 sleep
0149 scan_key:
0029 0150 call scan
002A 0151 btrss flag,key_yes
002B 0152 goto no_key
0153 ;have key
002C 0154 clrr second_count ;清中断次数计数器
002D 0155 clrr tmr0 ;清时钟计数器,开始计时
0156 scan_again:
002E 0157 movr temp,0
002F 0158 movar temp0
0030 0159 call scan
0031 0160 movr temp,0
0032 0161 subar temp0,0
0033 0162 btrsc status,z
0034 0163 goto scan_again
0164
0165 scan_complete:
0035 0166 movr second_count,0
0036 0167 subia 46 ;65.5ms*46=3s
0037 0168 btrss status,c
0038 0169 goto long_key
0170
0171 ;short key
0039 0172 movr BH1415_State,0
003A 0173 subia ON
003B 0174 btrss status,z
003C 0175 goto no_key
003D 0176 incr channel,1
003E 0177 movr channel,0
003F 0178 subia 8
0040 0179 btrsc status,c
0041 0180 goto display
0181
0042 0182 movia 1
0043 0183 movar channel
0184 display:
0044 0185 call send_date_light_led
0045 0186 movr channel,0
0046 0187 movar store_channel
0047 0188 movar eep_data_writen
0048 0189 call write_eep_1byte ;写 I2c
0190
0049 0191 goto main
0192
0193
0194 long_key:
004A 0195 movr BH1415_State,0
004B 0196 subia ON
004C 0197 btrss status,z
004D 0198 goto ON_KEY
0199 OFF_KEY:
004E 0200 movia 0Ah
004F 0201 iost porta
0050 0202 bcr porta,2
0051 0203 movia 0Ffh
0052 0204 iost portb
0053 0205 movar portb_state
0054 0206 movia OFF
0055 0207 movar BH1415_State
0208
0056 0209 goto main
0210
0211 ON_KEY:
0057 0212 goto Start
0213
0214 no_key:
0058 0215 goto main
0216
0217 ;-------------------------------------
0218 scan:
0059 0219 movr portb,0
005A 0220 andia 02h
005B 0221 movar temp
0222
005C 0223 btrss temp,1
005D 0224 goto no_key1
0225
005E 0226 call Debounce
005F 0227 movr portb,0
0060 0228 andia 02h
0061 0229 movar temp
0230
0062 0231 btrss temp,1
0063 0232 goto no_key1
0233
0064 0234 bsr flag,key_yes
0065 0235 return
0236 no_key1:
0066 0237 bcr flag,key_yes
0067 0238 return
0239
0240 ;###############################################
0241 ;*******************************************************************
0242 ;function name: send_date_light_led
0243 ;description: send date and light led
0244 ;input: channel
0245 ;output: portb_state
0246 ;****************************************
0247 send_date_light_led:
0068 0248 movr channel,0
0069 0249 subia 1
006A 0250 btrss status,z
006B 0251 goto channel2
0252 ;channel1
006C 0253 movia 02h
006D 0254 iost porta
006E 0255 movia 0fh
006F 0256 iost portb
0070 0257 movar portb_state
0071 0258 bsr porta,3
0259
0260 ;发送数据
0072 0261 movia chan1
0073 0262 movar send_date_low
0263
0074 0264 call send_date
0265
0075 0266 return
0267
0268 channel2:
0076 0269 movr channel,0
0077 0270 subia 2
0078 0271 btrss status,z
0079 0272 goto channel3
0273
007A 0274 movia 0Ah
007B 0275 iost porta
007C 0276 movia 0bh
007D 0277 iost portb
007E 0278 movar portb_state
007F 0279 bsr portb,2
0280 ;发送数据
0080 0281 movia chan2
0081 0282 movar send_date_low
0082 0283 call send_date
0083 0284 return
0285 channel3:
0084 0286 movr channel,0
0085 0287 subia 3
0086 0288 btrss status,z
0087 0289 goto channel4
0290
0088 0291 movia 08h
0089 0292 iost porta
008A 0293 movia 0Fh
008B 0294 iost portb
008C 0295 movar portb_state
008D 0296 bsr porta,1
0297 ;发送数据
008E 0298 movia chan3
008F 0299 movar send_date_low
0090 0300 call send_date
0091 0301 return
0302 channel4:
0092 0303 movr channel,0
0093 0304 subia 4
0094 0305 btrss status,z
0095 0306 goto channel5
0307
0096 0308 movia 0Ah
0097 0309 iost porta
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -