久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4309|回復: 7
收起左側

豆漿機Proteus單片機匯編源碼轉化成C代碼 求翻譯

[復制鏈接]
ID:208751 發表于 2017-6-10 18:55 | 顯示全部樓層 |閱讀模式
求大神幫我把這份匯編語言的代碼轉化成C語言的代碼,可以在KEIL里面用的。
這代碼是我找的豆漿機Proteus仿真源碼,但是我匯編語言不會,求翻譯。。。。。

豆漿機的仿真電路圖

豆漿機的仿真電路圖

ORG   0000H           
LJMP   MAIN            
ORG  0003H           
LJMP   INT0_RD     ;INT0口中斷(液位溢出和液位過低中斷)入口   
ORG  0013H           
LJMP   INT1_RD     ;INT1口中斷(超液位中斷)   
ORG  0030H        ;置初始狀態      
MAIN: MOV  SP,#70H            
SETB  IT0           ;INT0口中斷觸發方式為跳變觸發`           
SETB  IT1          ;INT1口中斷觸發方式為跳變觸發           
SETB  EA           ;開放中斷            
MOV  IE,#85H       ;開中斷            
MOV  IP,#01H       ;INT0中斷源為高優先級,INT1中斷源為低優先級  
CLR  P3.0           ;設初值              
CLR  P3.1            
MOV  30H,#00H       ;設置時間單元清零            
MOV  31H,#00H       ;顯示模式單元清零            
MOV  34H,#00H       ;顯示定時時間單元清零           
MOV  32H,#00H       ;計時顯示十位清零         
MOV  33H,#00H       ;計時顯示個位清零
SCAN_RD:LCALL  XS_RD        ;開始無鍵按下,顯示00           
LCALL  SCAN_KEYB    ;模式選擇               
JZ   SCAN_RD      ;有鍵按下 向下               
LCALL  KEY_PRSD            
MOV  DPTR,#JMP_RD  ;設置轉移表首地址            
MOV  A,R5            ;取鍵值              
RL  A               ;鍵值乘以2              
INC  R5              
JMP  @A+DPTR   
JMP_RD:AJMP  PRO_00       ;模式0            
AJMP  PRO_01       ;模式1           
AJMP  PRO_02       ;模式2      
PRO_00:MOV  30H,#06       ;定時時間為6s            
AJMP  LOOP_W     PRO_01:MOV  30H,#09       ;定時時間為9s        
AJMP  LOOP_W     PRO_02:MOV  30H,#12       ;定時時間為12s      
AJMP  LOOP_W              ;模式選擇后閃爍3次     
LOOP_W:MOV  34H,30H         ;調入定時時間顯示數據            
MOV  R7,#3            ;閃爍3次   
LOOP_RD:MOV  R6,#30           ;延時20MS的次數
LOOP0_RD:LCALL  XS_RD         ;調顯示程序           
LCALL  DL20MS            
DJNZ  R6,LOOP0_RD   ;1S              
MOV  R6,#25          ;延時20MS的次數
LOOP1_RD:LCALL  XS0_RD           
LCALL  DL20MS            
DJNZ  R6, LOOP1_RD   ;0.5S            
DJNZ  R7,LOOP_RD    ;閃爍3次
;開始工作            
MOV   R6,#02           ;粉碎次數         
LCALL  JR_RD
G00N_GZ:LCALL  
FS_RD         
LCALL  JR_RD            
DJNZ   R6, G00N_GZ         
LCALL  BAOJ_WRD    ;加熱子程序   
JR_RD: MOV  34H,30H          ;給顯示單元置數            
SETB  P3.0             ;加熱            
MOV  R4,#50           ;20MS程序循環50次
GOON_JR:LCALL  TIME_19MS     ;調用定時20MS子程序         
LCALL  XS_RD          ;顯示            
DJNZ   R4,GOON_JR      ;到1S了            
MOV   R4,#50          ;20MS程序循環50次           
DJNZ   34H,GOON_JR    ;倒計時完成            
CLR   P3.0             ;停止加熱            
RET            ;粉碎子程序      
FS_RD: MOV  34H,30H          ;重新給顯示單元置數            
SETB  P3.1             ;粉碎            
MOV  R4,#50           ;20MS程序循環50次
GOON_FS:LCALL  TIME_19MS     ;調用定時20MS子程序           
LCALL  XS_RD         ;顯示            
DJNZ  R4,GOON_FS    ;到1S            
MOV  R4,#50         ;20MS程序循環50次           
DJNZ  34H,GOON_FS   ;粉碎完畢            
CLR  P3.1            ;停止粉碎            
RET            ;鍵盤子程序  
SCAN_KEYB:MOV  P2,#0EFH      ;掃描有無按鍵按下            
MOV  A, P2            
ANL   A, #0EFH            
XRL   A, #0EFH               
JZ   NO_KEY         
ACALL   DL20MS            
ANL  A, #0EFH            
XRL  A, #0EFH               
JZ  NO_KEY      
NO_KEY:RET  
KEY_PRSD: MOV  R4, P2            
MOV  R5, #00H            
MOV  DPTR,#KEY_TAB   
CAL_VAL: MOV  A,R5
MOVC  A,@A+DPTR    ;查鍵值表            
XRL  A,R4               
JZ  FIXED               
INC  R5            ;鍵值加1            
SJMP  CAL_VAL      
FIXED: MOV  A,P2          ;判斷按鍵是否釋放            
ANL  A, #0EFH            
XRL  A, #0EFH            
JNZ   FIXED         
ACALL  DL20MS            
MOV  A, P2              
ANL  A, #0EFH            
XRL  A, #0EFH            
JNZ  FIXED            
RET  
KEY_TAB: DB 0EBH, 0EDH, 0EEH
DL20MS: MOV  R3, #20      
DD1: MOV  R4, #200      
DD2: NOP            
     NOP      
     NOP      
DJNZ  R4, DD2      
DJNZ  R3, DD1        
RET             ;顯示子程序   
XS_RD: MOV  31H,R5           ;調入模式顯示數據         
MOV  R0,#31H           ;顯示緩存區數據           
MOV  P1,#00000010B     ;第三個燈為顯示位置        
ACALL  DISP_RD          ;顯示一位  
XS0_RD: MOV  A,34H            ;將定時數據分為兩位         
MOV  B, #10           
DIV  AB            
MOV  32H,A            ;十位         
MOV   33H,B            ;個位           
CJNE  A,#00H,XS1_RD0  ;十位是否為0         
AJMP  XS1_RD
XS1_RD0:MOV  R0,#32H           
MOV  P1,#00000100B     ;第五個為顯示位置        
ACALL  DISP_RD          ;顯示一位   
XS1_RD: MOV  R0,#33H           ;顯示緩存區數據         
MOV  P1,#00000101B     ;第六個燈為顯示位置        
ACALL  DISP_RD          ;顯示一位           
RET   
DISP_RD:MOV  DPTR,#LED_RD   ;字型碼表首地址
MOV  A,@R0           ;取顯示數據            
MOVC  A,@A+DPTR     ;求顯示數據的字型碼         
MOV  P0,A            ;輸出字型碼        
ACALL  DL1MS          ;穩定顯示1ms            
RET                  ;返回           
;延時小程序   
DL1MS: MOV  R3, #200   
DDD1: NOP      
      NOP   
      NOP           
DJNZ  R3, DDD1      
RET              
;字型碼表  
LED_RD: DB 3FH, 06H, 5BH, 4FH, 66H; '0, 1,2, 3,4’         
DB 6DH, 7DH, 07H, 7FH, 6FH; '5, 6, 7, 8,9’            ;定時19MS子程序  
TIME_19MS:MOV  TMOD,#01H      ;設置工作方式1和定時模式            
MOV  TH0,#0B5H       ;計數初值為46536(O)           
MOV  TL0, #0C8H            
SETB  TR0              ;啟動定時器  
CONT_RD: JBC  TF0,OVER_RD    ;是否溢出            
SJMP  CONT_RD   OVER_RD: MOV  TH0,#0B5H      ;重新設計數初值為46536(O)  
MOV  TL0, #0C8H            
RET                                     ;溢出中斷和液位過低中斷         
ORG  0200H   
INT0_RD:LCALL  BAOJ_WRD      ;直接報警并關發熱器和電動機電源            
RETI                                     ;超液位中斷            
ORG  0300H     
INT1_RD:CLR  EA               ;關中斷           
PUSH  ACC             ;保護現場           
PUSH  PSW            
SETB  EA              ;開中斷            
SETB  RS0             ;把工作寄存器切換到1區            
MOV  P1,#00000111B    ;報警燈亮            
JNB  P3.0,INT0_FS     ;判斷是否在加熱            
CLR  P3.0             ;停止加熱
WAIT_RD: JNB   P3.3,WAIT_RD     ;液位是否下降           
SETB  P3.0             ;繼續極熱           
LJMP  OK     
INT0_FS:CLR  P3.1            ;停止粉碎  
WAIT0_RD:JNB  P3.3,WAIT0_RD  ;液位是否下降
SETB  P3.1            ;繼續粉碎        
OK:CLR  EA               ;關中斷            
POP  PSW             ;恢復現場            
POP  ACC            
SETB  EA              ;開中斷           
RETI             ;報警子程序  
BAOJ_WRD:CLR  P3.0             ;關電源            
CLR  P3.1            
MOV  P1,#00000110B    ;蜂鳴器響         
LCALL  DL1MS            
MOV   P1,#00000111B   ;報警燈亮         
LCALL  DL1MS            
AJMP  BAOJ_WRD

回復

使用道具 舉報

ID:209932 發表于 2017-6-10 20:50 | 顯示全部樓層
有點復雜,有點困難
回復

使用道具 舉報

ID:34643 發表于 2017-6-11 06:39 | 顯示全部樓層
轉換,不如重新寫出個。
回復

使用道具 舉報

ID:208751 發表于 2017-6-11 14:16 | 顯示全部樓層
51mcu 發表于 2017-6-11 06:39
轉換,不如重新寫出個。

我不會寫,看電路圖寫代碼不會呀,我是小白,什么都不懂得那種
回復

使用道具 舉報

ID:208751 發表于 2017-6-11 14:19 | 顯示全部樓層
TopXia 發表于 2017-6-10 20:50
有點復雜,有點困難

那怎么辦??我急需這個哎,找了半天豆漿機的源碼只有這個匯編的沒有找到C,都快哭了~~o(>_<)o ~~
回復

使用道具 舉報

ID:82765 發表于 2017-6-11 23:53 | 顯示全部樓層
提示: 作者被禁止或刪除 內容自動屏蔽
回復

使用道具 舉報

ID:208751 發表于 2017-6-12 08:14 | 顯示全部樓層
cjjcjj1 發表于 2017-6-11 23:53
你好!這個改寫有點麻煩,而且你設計的功能要求也沒提,c語言程序什么時間要

功能:
1.當接通電源且沒有按鍵選擇模式時,電源指示燈亮。顯示器顯示“0  0”,表示處于等待狀態
2.在等待狀態下按下鍵1、鍵2或鍵3時,就會選擇工作模式1、模式2或模式3。后面的12表示加熱時間,閃3次豆漿機開始工作
3.當顯示器上模式“3”閃三次后,豆漿機開始第一次加熱,加熱指示燈(紅燈)亮,計時顯示器開始倒計數
4.當第一次加熱計時到0時,加熱結束,開始第一次粉碎。計時顯示器重新開始倒計時,粉碎指示燈(黃燈)亮。之后又進行第二次加熱,第二次粉碎。
5.當兩次粉碎,三次加熱結束后,豆漿機工作完畢。此時豆漿機主動關電源,同時報警燈亮,蜂鳴器響
。
注:當在工作中液位超過安全位置時,豆漿機暫停工作,報警燈亮。待液位回落后,繼續接著執行之前的操作。
我急用,最遲明天就要用的。求大神幫個忙。
回復

使用道具 舉報

ID:781022 發表于 2020-6-17 13:20 | 顯示全部樓層
你好,可以發一下電路圖和代碼的文件嗎
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩一区二区在线免费观看 | 国产在线一区观看 | 9久9久9久女女女九九九一九 | 99久久精品免费看国产四区 | 一区二区三区视频在线观看 | 日韩精品1区2区3区 成人黄页在线观看 | 亚洲视屏 | 最近中文字幕第一页 | 久久精品一 | 日韩最新网址 | 精品成人在线视频 | 日日摸日日添日日躁av | 伊人狠狠干 | 亚洲国产精品99久久久久久久久 | 日韩超碰在线 | 国产精品一区二区久久久久 | 亚洲看片 | 特级黄色毛片 | 久热精品在线观看视频 | 国产一区二区在线免费观看 | 黄色三级免费网站 | 精品免费国产视频 | 伊人狠狠操 | 久久国产成人精品国产成人亚洲 | 成人激情免费视频 | 国产欧美精品在线 | 91免费观看在线 | 国产人成精品一区二区三 | 欧美一区二区三区在线看 | 久久曰视频 | 精品乱码一区二区 | 国产精品一区二区久久精品爱微奶 | 男人天堂社区 | 国产精品欧美日韩 | 激情一区 | 国产视频一视频二 | 精品久久久久久亚洲精品 | 91资源在线| 国产日韩一区二区三区 | 日本天堂一区二区 | 久久精品久久久 |