历史上的今天
返回首页

历史上的今天

今天是:2025年01月29日(星期三)

2018年01月29日 | EM78P153程序范例

2018-01-29 来源:eefocus

芯片为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


推荐阅读

史海拾趣

Belden Wire & Cable公司的发展小趣事

为了进一步扩大市场份额,Belden公司开始实施全球扩张战略。公司先后在多个国家和地区设立了分支机构,将优质的产品和服务带到了世界各地。此外,Belden还积极寻求与其他知名企业的战略合作,通过强强联合,共同推动电线电缆行业的发展。这些合作不仅为Belden带来了更多的商业机会,还提升了公司在全球市场的竞争力。

CAO Group Inc公司的发展小趣事

随着公司的发展壮大,CAO Group开始面临来自各方面的竞争压力,其中包括知识产权的争议。近期,公司针对其在美国注册的三项专利——Lumist美白贴、SPRAY BOTTLE HEAD喷雾瓶头和透明氟塑料,发起了维权行动。公司积极应对,通过法律手段保护自身的知识产权,展示了其维护合法权益的决心和实力。

南京中科微公司的发展小趣事

CSM凭借其卓越的技术实力和产品性能,逐渐在市场上获得了广泛认可。公司先后荣获了多项荣誉和奖项,如2021“物联之星”年度评选之“星锐奖”等。这些荣誉不仅是对CSM技术实力和市场地位的肯定,也是对公司未来发展的鞭策和激励。

以上五个故事分别从CSM的创立背景、技术突破、合作模式、重大项目承担和市场认可等方面展现了公司在电子行业中的发展历程和成就。希望这些故事能够为您了解CSM提供有益的参考。

Black Box Corporation公司的发展小趣事

在数字化时代,通信技术的更新换代速度极快。为了保持竞争优势,Black Box不断投入研发,推出了一系列创新产品和技术。例如,公司研发了一款智能网络管理平台,能够实时监控网络状态并进行故障预警。这一技术创新大大提高了网络的稳定性和安全性,赢得了客户的广泛好评。

Anpec(茂达)公司的发展小趣事

为了适应全球化的市场趋势,茂达电子制定了全面的全球化战略。公司不仅加强了与国际市场的联系,还积极寻求与国际知名企业的合作机会。同时,茂达电子还加大了对海外市场的投入,通过设立海外分支机构、参加国际展会等方式,不断提升品牌知名度和市场影响力。

这五个故事只是Anpec(茂达电子)发展历程中的一部分,但它们充分展示了茂达电子在电子行业中的崛起和成就。作为一家具有创新精神和市场洞察力的企业,茂达电子将继续致力于为客户提供优质的产品和服务,推动电子行业的持续发展。

国芯佳品公司的发展小趣事

随着技术的不断发展,茂达电子在产品研发上不断取得突破。公司投入大量人力、物力进行技术研发,并与多家国内外著名大学和研究机构合作,共同推进模拟集成电路设计的创新。经过不懈的努力,茂达电子成功推出了一系列世界领先的半导体器件产品,赢得了市场的广泛认可。

问答坊 | AI 解惑

机器人 转一个国外的机器人项目

http://66.249.89.132/translate_c?hl=zh-CN&sl=en&u=http://www.robotroom.com/Jet.html&prev=/search%3Fq%3DC51%2Bcompiler%26hl%3Dzh-CN%26client%3Daff-cs-360se%26hs%3Dbtg%26sa%3DN%26start%3D50%26newwindow%3D1&usg=ALkJrhhLTO9Bj7aM9-ySHE ...…

查看全部问答>

PCB设计注意事项

  一.焊盘重叠 焊盘(除表面贴装焊盘外)的重叠,也就是孔的重叠放置,在钻孔时会因为在一处多钻孔导致断钻头、导线损伤。 二.图形层的滥用 1. 违反常规设计,如元件面设计在BOTTOM层,焊接面设计在TOP,造成文件编辑时正反面错误。 2. PCB ...…

查看全部问答>

版主,能发给我一份,28015可以用的 chip support package(csp)吗?

版主,能发给我一份,28015可以用的  chip support package(csp)吗?网上一直找不到这个东东,可以麻烦版主,或者哪位朋友有发给我一份吗? z_s_rong@126.com 谢谢。…

查看全部问答>

【求助】各位大侠帮帮忙,我快郁闷死了!!

faceb4: 我在做msp430驱动sed1335来显示320*240的液晶显示屏,程序怎么都不行,希望那位大侠能够给一些程序(包括初始化),谢谢了!!! …

查看全部问答>

HA12002 有关问题

喇叭保护IC HA12002 的过载保护(第六脚)如何接入(需多少电压),第5脚(交流检测)参数如何设定,可否直接短路?谢谢大侠们细心指导!!!(从报废的功放中得到了一块喇叭保护板,想用在自己DIY的功放中)…

查看全部问答>

友善之臂mini2440转手

卖掉...友善之臂mini2440开发板3.5寸LCD触摸屏S3C24...有木有人想要... [img]file:///C:/Users/吴斌/Documents/Tencent%20Files/874901774/Image/d[$%7B6@z@6duwe33y%25l9~%250z.jpg[/img] file:///C:/Users/吴斌/Documents/Tencent%20Files/8749 ...…

查看全部问答>

悲剧的Nios 12.0

最近一直想给EE_FPGA做个集成化的测试程序,思来想去还是nios开发简单点,尼玛,悲剧的事情发生了。。 我做了一遍一遍,就是不对,怎么都下载不到sdram里面去。真的是黔驴技穷了啊。。 我开始怀疑编译器了,我换成了nios 11.0 ;NND,就神奇的好 ...…

查看全部问答>

launch pad USB串口驱动在win8 64bit 跑串口不稳定

环境1. 硬件 430 launchpad with touch board2. 下载了touch board的软件包slac490,安装里面的usb驱动LaunchPad_Driver3. CCS5.5.0 4. win8 64bit现象1. CCS可以连接并debug2. 硬件管理器里面可以看到USB映射com3. 将launch pad 串口收发短接(去 ...…

查看全部问答>

【高薪诚聘】硬件工程师、嵌入式开发【成都】

成都成我科技有限公司高薪诚聘硬件工程师、嵌入式开发, 良好的福利和发展前景邀您加盟~ 工作地点:成都天府软件园 联系方式:11093753@qq.com(请将简历发送至此邮箱或加QQ详谈) 嵌入式工程师 岗位职责: 1. 根据需求裁剪Linux 2. 调试摄 ...…

查看全部问答>