男女午夜激情_www.天堂av.com_亚洲综合小说区_亚洲欧美自拍视频_成年精品_久久www免费人成—看片_激情综合五月天_久久高潮视频_最新国产成人ab网站_国产精品卡一

機電之家資源網
單片機首頁|單片機基礎|單片機應用|單片機開發|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發
培訓信息
贊助商
EM78P153范例程序
EM78P153范例程序
 更新時間:2008-7-26 20:12:37  點擊數:2
【字體: 字體顏色

;芯片為EM78P153

;P64,P65接晶振,振蕩模式為4MHz晶振

;看門狗關,指令周期為2個CLOCK,P63為復位腳

;*******************IO口的定義*********************

PORT6 EQU 0X06

IOC60 EQU 0X06

;**************特殊功能寄存器的定義******************

TCC EQU 0X01

PC EQU 0X02

PSW EQU 0X03

IOCD0 EQU 0X0D

IOCE0 EQU 0X0E

IOCF0 EQU 0X0F

RF EQU 0X0F

;***************用戶自定義的寄存器*******************

COUNTER EQU 0X10

CODE1 EQU 0X11

CODE2 EQU 0X12

CODE3 EQU 0X13

CODE4 EQU 0X14

LP_CNT0 EQU 0X15

LP_CNT1 EQU 0X16

TEMP EQU 0X17

TEMPCODE EQU 0X18

REPEAT_COUNTER EQU 0X19

SEND_DATA EQU 0X1A

USER_CODE EQU 0X1B

FLAG EQU 0X1C

;*******************FLAG位定義**********************

C EQU 0

Z EQU 2

TCIF EQU 0

LEAD EQU 0

REPEAT EQU 1

INPUT EQU 1

OUTPUT EQU 0

ORG 0X000

NOP

NOP

NOP

NOP

JMP 0X50

;********************表格轉換子程序程序******************

TABLE_CONVER:

CLR TEMP

TABLE_CONVER_1:

MOV A,TEMP

CALL TABLE_CONVERSION_IN

BC PSW,Z

XOR A,CODE3

JBC PSW,Z

JMP EXIT_5

INC TEMP

JMP TABLE_CONVER_1

EXIT_5:

CALL TABLE_CONVERSION_OUT

RET

;**********************表格轉換程序IN*********************

TABLE_CONVERSION_IN:

ADD PC,A

RETL 0XD0 ;KEY_1

RETL 0X58 ;KEY_2

RETL 0XD8 ;KEY_3

RETL 0X90 ;KEY_4

RETL 0X18 ;KEY_5

RETL 0X98 ;KEY_6

RETL 0XE0 ;KEY_7

RETL 0X68 ;KEY_8

RETL 0XE8 ;KEY_9

RETL 0X28 ;KEY_0

RETL 0X20 ;KEY_3D

RETL 0XA0 ;KEY_MUTE

RETL 0X40 ;KEY_VOCAL

RETL 0XE2 ;KEY_VOL+

RETL 0XA2 ;KEY_VOL-

RETL 0X52 ;KEY_TUNE FWD

RETL 0X22 ;KEY_TUNE REV

RETL 0X12 ;KEY_STOP

RETL 0X80 ;KEY_<|

RETL 0X82 ;KEY_|>

RETL 0X02 ;KEY_OK

RETL 0XF0 ;KEY_TUNER

RETL 0X78 ;KEY_AM/FM

RETL 0XF8 ;KEY_SAVE

RETL 0X50 ;KEY_AUDIO

;**********************表格轉換程序OUT*********************

TABLE_CONVERSION_OUT:

MOV A,TEMP

ADD PC,A

RETL 0X35 ;KEY_1

RETL 0X2D ;KEY_2

RETL 0X25 ;KEY_3

RETL 0X1D ;KEY_4

RETL 0X34 ;KEY_5

RETL 0X2C ;KEY_6

RETL 0X24 ;KEY_7

RETL 0X1C ;KEY_8

RETL 0X33 ;KEY_9

RETL 0X2B ;KEY_0

RETL 0X10 ;KEY_3D

RETL 0X18 ;KEY_MUTE

RETL 0X11 ;KEY_VOCAL

RETL 0X16 ;KEY_VOL+

RETL 0X15 ;KEY_VOL-

RETL 0X28 ;KEY_TUNE FWD

RETL 0X2A ;KEY_TUNE REV

RETL 0X22 ;KEY_STOP

RETL 0X31 ;KEY_<|

RETL 0X21 ;KEY_|>

RETL 0X29 ;KEY_OK

RETL 0X2E ;KEY_TUNER

RETL 0X20 ;KEY_AUX-1

RETL 0X23 ;KEY_AUX-2

RETL 0X17 ;KEY_DVD

 

ORG 0X050

MAIN:

;*********************初始化寄存器**********************

MOV A,@0B00000000

IOW IOCE0

MOV A,@0B11111101

IOW IOCD0

MOV A,@0B00000010

IOW IOC60

MOV A,@0B00000001

MOV PORT6,A

MOV A,@0B00000001

IOW IOCF0

CLR FLAG

CLR TEMPCODE

CLR COUNTER

CLR CODE1

CLR CODE2

CLR CODE3

CLR CODE4

MOV A,@0B10010000

MOV USER_CODE,A

;*********************掃描引導碼**********************

SCAN_LEAD_CODE:

JBC PORT6,INPUT

JMP SCAN_LEAD_CODE

CLR FLAG

CLR REPEAT_COUNTER

CLR TEMPCODE

CALL JUDGE_START_CODE

JBS FLAG,LEAD

JMP SCAN_LEAD_CODE

;*********************接收數據**********************

RECEIVE_DATA_PROCEE:

CLR TEMPCODE

CALL RECEIVE_DATA

MOV A,TEMPCODE

MOV CODE1,A

 

MOV A,@0 ;判斷用戶碼是否是00

BC PSW,Z

XOR A,CODE1

JBS PSW,Z

JMP SCAN_LEAD_CODE

 

 

CLR TEMPCODE

CALL RECEIVE_DATA

MOV A,TEMPCODE

MOV CODE2,A

 

MOV A,@0XFF ;判斷用戶碼是否是FF

BC PSW,Z

XOR A,CODE2

JBS PSW,Z

JMP SCAN_LEAD_CODE

 

CLR TEMPCODE

CALL RECEIVE_DATA

MOV A,TEMPCODE

MOV CODE3,A

 

CLR TEMPCODE

CALL RECEIVE_DATA

MOV A,TEMPCODE

MOV CODE4,A

CLR FLAG

;*********************發送數據**********************

SEND_DATA_PROCEE:

JBS USER_CODE,6 ;ST碼的次高位反相

JMP COM_1 ;=0

JMP COM_2 ;=1

COM_1:

BS USER_CODE,6

JMP VVV

COM_2:

BC USER_CODE,6

JMP VVV

VVV:

CALL TABLE_CONVER ;調用碼表轉換子程序

MOV CODE3,A

REP:

CALL TRANSMIT_DATA

BS PORT6,OUTPUT

CALL JUDGE_REPEAT_CODE ;掃描引導碼是否在重復?

JBS FLAG,LEAD

JMP SCAN_LEAD_CODE

JBC FLAG,REPEAT

JMP REP ;引導碼是重復,繼續掃描

JMP RECEIVE_DATA_PROCEE ;引導碼不重復,去接收新數據

;****************引導碼的檢測子程序*****************

JUDGE_START_CODE:

CLR COUNTER ;清計數器

JUDGE_START_CODE_0:

JBC PORT6,INPUT

JMP NO_HIGH

CALL DELAY0.5MS

JBC PORT6,INPUT

JMP NO_HIGH

INC COUNTER

JMP JUDGE_START_CODE_0

NO_HIGH:

MOV A,COUNTER

BC PSW,C

SUB A,@20 ;20-A

JBS PSW,C

JMP EXIT_0 ;C=1,COUNTER>20

MOV A,COUNTER

BC PSW,C

SUB A,@16 ;16-A

JBC PSW,C

JMP EXIT_0 ;C=0,COUNTER<16

BS FLAG,LEAD

EXIT_0:

JBC PORT6,INPUT

JMP EXIT_0

INC REPEAT_COUNTER

RET

;****************接收數據子程序**********************

RECEIVE_DATA:

MOV A,@8

MOV COUNTER,A

MOV A,@0B00100000

CONTW ;停止記數

CONTINUE_1:

JBS PORT6,INPUT

JMP CONTINUE_1

CLR TCC

MOV A,@0B00000100

CONTW ;TCC開始記數

CONTINUE_2:

MOV A,TCC

MOV TEMP,A

BC PSW,C

SUB A,@250

JBS PSW,C

JMP SCAN_LEAD_CODE ;C=0,TCC>250

 

JBC PORT6,INPUT

JMP CONTINUE_2

MOV A,TCC

MOV TEMP,A

BC PSW,C

SUB A,@60;142

JBC PSW,C

JMP X1 ;C=1,TCC<60

JMP X2 ;C=0,TCC>60

X1:

BC TEMPCODE,0

JMP EXIT_1

X2:

BS TEMPCODE,0

JMP EXIT_1

EXIT_1:

DJZ COUNTER

JMP HH

MOV A,@0B00100000

CONTW ;停止記數

RET

HH:

BC PSW,C

RLC TEMPCODE

JMP CONTINUE_1

 

;****************發送數據子程序**********************

TRANSMIT_DATA:

MOV A,@4

MOV COUNTER,A

MOV A,USER_CODE ;@0B10010000 ;發送ST的用戶碼

MOV SEND_DATA,A

CYCLE_1:

JBS SEND_DATA,7

JMP SEND_P_0

JMP SEND_P_1

SEND_P_1:

CALL SEND_CODE_1

JMP EXIT_3

SEND_P_0:

CALL SEND_CODE_0

JMP EXIT_3

EXIT_3:

RLC SEND_DATA

DJZ COUNTER

JMP CYCLE_1

 

MOV A,@8

MOV COUNTER,A

MOV A,CODE3

MOV SEND_DATA,A

RLC SEND_DATA

CYCLE_2:

JBS SEND_DATA,7

JMP SEND_Q_0

JMP SEND_Q_1

SEND_Q_1:

CALL SEND_CODE_1

JMP EXIT_4

SEND_Q_0:

CALL SEND_CODE_0

JMP EXIT_4

EXIT_4:

RLC SEND_DATA

DJZ COUNTER

JMP CYCLE_2

RET

;***************發送數據"1"子程序********************

SEND_CODE_1:

MOV A,@0B00100000

CONTW ;停止記數

MOV A,@0B00000001 ;允許TCC中斷

IOW IOCF0

MOV A,@35 ;引導脈沖的預置值

MOV TCC,A

MOV A,@0B00000001 ;選擇預分頻比為1:4

CONTW

BC PORT6,OUTPUT

WAIT_1:

JBS RF,TCIF

JMP WAIT_1

MOV A,@0B00100000

CONTW ;停止記數

BC RF,TCIF

MOV A,@32 ;代碼"1"的預置值

MOV TCC,A

MOV A,@0B00000101 ;選擇預分頻比為1:64

CONTW

BS PORT6,OUTPUT

WAIT_2:

JBS RF,TCIF

JMP WAIT_2

BC RF,TCIF

MOV A,@0B00100000

CONTW ;停止記數

RET

;***************發送數據"0"子程序********************

SEND_CODE_0:

MOV A,@0B00100000

CONTW ;停止記數

MOV A,@0B00000001 ;允許TCC中斷

IOW IOCF0

MOV A,@35 ;引導脈沖的預置值

MOV TCC,A

MOV A,@0B00000001 ;選擇預分頻比為1:4

CONTW

BC PORT6,OUTPUT

WAIT_3:

JBS RF,TCIF

JMP WAIT_3

MOV A,@0B00100000

CONTW ;停止記數

BC RF,TCIF

 

MOV A,@114 ;代碼"0"的預置值

MOV TCC,A

MOV A,@0B00000101 ;選擇預分頻比為1:64

CONTW

BS PORT6,OUTPUT

WAIT_4:

JBS RF,TCIF

JMP WAIT_4

NOP

BC RF,TCIF

MOV A,@0B00100000

CONTW ;停止記數

RET

;****************重復碼的檢測子程序******************

JUDGE_REPEAT_CODE:

CLR COUNTER ;清計數器

CLR FLAG

JUDGE_REPEAT_CODE_0:

JBC PORT6,INPUT

JMP JUDGE_REPEAT_CODE_0

SS:

JBC PORT6,INPUT

JMP JUDGE_REPEAT_CODE_1

CALL DELAY0.5MS

JBC PORT6,INPUT

JMP JUDGE_REPEAT_CODE_1

INC COUNTER

JMP SS

JUDGE_REPEAT_CODE_1:

MOV A,COUNTER

BC PSW,C

SUB A,@20 ;20-A

JBS PSW,C

JMP EXIT_2 ;C=1,COUNTER>20

MOV A,COUNTER

BC PSW,C

SUB A,@16 ;16-A

JBC PSW,C

JMP EXIT_2 ;C=0,COUNTER<16

BS FLAG,LEAD

JMP JUDGE_REPEAT_CODE_2

EXIT_2:

RET

JUDGE_REPEAT_CODE_2:

CLR COUNTER ;清計數器

JUDGE_REPEAT_CODE_3:

JBS PORT6,INPUT

JMP JUDGE_REPEAT_CODE_4

CALL DELAY0.5MS

JBS PORT6,INPUT

JMP JUDGE_REPEAT_CODE_4

INC COUNTER

JMP JUDGE_REPEAT_CODE_3

JUDGE_REPEAT_CODE_4:

MOV A,COUNTER

BC PSW,C

SUB A,@7 ;7-A

JBS PSW,C

JMP NO_REPEAT ;C=0,COUNTER>7

JMP YES_REPEAT ;C=1,COUNTER<7

NO_REPEAT:

BC FLAG,REPEAT

CLR REPEAT_COUNTER

RET

YES_REPEAT:

BS FLAG,REPEAT

INC REPEAT_COUNTER

RET

;****************延時0.5mS子程序*********************

DELAY0.5MS:

MOV A,@2

MOV LP_CNT0,A

DELAY0.5MS_1:

MOV A,@82

MOV LP_CNT1,A

DELAY0.5MS_2:

NOP

NOP

NOP

DJZ LP_CNT1

JMP DELAY0.5MS_2

DJZ LP_CNT0

JMP DELAY0.5MS_1

RET

 

  • 上一篇: EM78系列單片機程序設計
  • 下一篇: EM78系列8位單片機指令集
  • 發表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網友評論:(只顯示最新5條。)
    關于我們 | 聯系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發消息66821730(技術支持)點擊這里給我發消息66821730(廣告投放) 點擊這里給我發消息41031197(編輯) 點擊這里給我發消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業自行提供,該企業負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(濱江)機電一體化學會
    中國行業電子商務100強網站

    網站經營許可證:浙B2-20080178-1
    主站蜘蛛池模板: 玉林市| 穆棱市| 潢川县| 宜黄县| 南通市| 阳朔县| 武鸣县| 宝清县| 香港| 淮阳县| 三河市| 贵阳市| 福安市| 蓝山县| 丰城市| 罗定市| 丘北县| 肇源县| 克什克腾旗| 南投市| 囊谦县| 雷波县| 绵竹市| 永兴县| 上饶市| 阿图什市| 沧源| 北流市| 青冈县| 白朗县| 长治市| 瓮安县| 乌拉特前旗| 海原县| 右玉县| 广州市| 平果县| 民权县| 兰西县| 乌鲁木齐县| 清新县|