1:
KEY1 EQU P2.2
KEY2 EQU P2.1
KEY3 EQU P2.0
RED EQU P1.4
YELLOW EQU P1.5
GREEN EQU P1.6
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
SETB RED
SETB YELLOW
SETB GREEN
LP:
JB KEY1,LP1
CLR RED
SJMP LP
LP1:
JB KEY2,LP2
CLR YELLOW
SJMP LP
LP2:
JB KEY3,MAIN
CLR GREEN
SJMP LP
END
2:
KEY1 EQU P2.2
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV R0,#0
LP:
JB KEY1,DISP
JNB KEY1,$
INC R0
CJNE R0,#10,DISP
MOV R0,#0
DISP:
MOV DPTR,#LEDTAB
MOV A,R0
MOVC A,@A+DPTR
MOV P0,A
SJMP LP
TABLE: ; 共陰極數碼管顯示代碼表
DB 3FH,06H,5BH,4FH,66H ;01234
DB 6DH,7DH,07H,7FH,6fh ;56789
END
Ⅱ 大神給看下這個51單片機匯編程序為什麼不能用,模擬不了
MOV B,#0
DIV AB
什麼意思?
Ⅲ 51單片機中如何用匯編語言編寫流水燈
流水燈就是51單片機控制led燈依次點亮的控制方式。具體程序如下:
ORG 0000H ;復位啟動
AJMP START ;
ORG 001BH ;T1中斷
AJMP T1INT ;
;定義變數========================
YSJS EQU 30H;延時計數器
LED EQU 31H;LED控制緩沖器
;主程序==========================
START: MOV LED,#0FEH ;初始化數據
MOV YSJS,#0 ;
MOV TMOD,#10H ;定時器1工作於方式1,16位定時器
MOV TL1,#0B0H ;設置定時初值
MOV TH1,#3CH ;定時時間=50mS
SETB ET1 ;使能定時器1中斷
SETB TR1 ;啟動定時器1
SETB EA ;開總中斷
MOV P1,LED ;初始化流水燈
LOOP: JMP LOOP ;循環等待中斷
T1INT: PUSH PSW ;定時器1中斷程序
PUSH ACC ;保護現場
MOV TH1,#3CH ;定時時間=50mS
MOV TL1,#0B0H ;
INC YSJS ;
PUSH ACC ;保護ACC
MOV A,YSJI ;
CJNE A,#2,QT1 ;50mS*2=100mS
MOV P1,LED ;
MOV A,LED ;
RL A ;累加器A的值循環左移1位
MOV LED,A ;
MOV YSJS,#0 ;
QT1: POP ACC ;恢復現場
POP PSW ;
RETI ;返回主程序
END ;匯編程序結束
(3)51單片機模擬匯編擴展閱讀:
實現流水燈的三個方法:
第一種,匯流排方法實現流水燈。這是一種比較笨但又最易理解的方法,採用順序程序結構,用位指令控制P1口的每一個位輸出高低電平,加上延時函數,即可控制每個LED燈的亮滅。
第二種,移位方法實現流水燈採用循環程序結構編程。首先在程序開始給P1.0口送一個低電平,其它位為高。然後延時一段時間再讓低電平往高位移動,這樣就實現「流水」的效果了。
第三種,庫函數實現流水燈。利用左移函數進行。
Ⅳ 51單片機匯編語言
1 步進電機的步進編碼 應該為 0101,0110,1010,1001, 才能轉起來。
2 單片機直接能驅動的步進電機 應該功率很小很小。
3 單片機不能串入12V 電壓。
ORG 0000H ; 修改 的 程序模擬通過 P1 口
LJMP MAIN
ORG 0030H
MAIN: MOV P1,#0F5H
LCALL DELAY
MOV P1,#0F6H
LCALL DELAY
MOV P1,#0FAH
LCALL DELAY
MOV P1,#0F9H
LCALL DELAY
AJMP MAIN
DELAY: MOV R7,#200
DL1: MOV R6,#250
DL2: NOP
NOP
NOP
DJNZ R6,DL2
DJNZ R7,DL1
RET
END
Ⅳ 匯編語言怎樣用keil生成,能在51單片機模擬的文件謝謝
按照你的意思
應該是程序用C語言編寫的,C語言經過編譯器處理後,先被翻譯成匯編語言,然後被轉化成機器碼,這些過程都是編譯器完成的,一般情況下,用keil可以生成hex文件、bin文件,51單片機一般是生成hex文件,用於下載到單片機(STC系列)中,hex文件可以用二進制軟體查看格式。若想深入了解編譯器,請看《編譯原理》這本書
Ⅵ MS51單片機的匯編代碼可以模擬么
可以的,不管是C語言還是匯編代碼都可以模擬的,不用單片機,在電腦上模擬也是可以的,用這個KEIL C可以的
這是我進來才知道的,http://group.ednchina.com/304/這個小組里有挺多關於51單片機的東西,可以去看看,挺不錯的,小組里的人很多的,人也很熱心,希望我的答案是你想要的啊
Ⅶ c51單片機控制交通燈要求用匯編語言
// 51單片機控制交通燈要求用匯編語言,模擬實例,可以參考一下
SNF EQU 00H ; 南北通行標志位
EWF EQU 01H ; 東西通行標志位
URF EQU 02H ; 緊急事件標志位
ORG 0000H
LJMP MAIN ; 上電轉主程序
ORG 000BH ; 定時中斷入口
LJMP DSZD
ORG 0003H ; 緊急中斷入口
LJMP URZD
ORG 0030H
MAIN: LCALL INIT ; 調用初始化子程序
LOOP: LCALL DIS ; 循環執行顯示子程序
AJMP LOOP
; *** *** *** 初始化程序
INIT: SETB SNF
SETB EWF
SETB URF
MOV R2,#20 ; 定時器中斷20次為1s
MOV TMOD,#01H ; 初始化定時器
MOV TL0,#0B0H
MOV TH0,#3CH
SETB EA ; 開定時中斷與緊急中斷
SETB ET0
SETB TR0
SETB EX0
SETB IT0 ; 設置中斷程式控制方式
MOV DPTR,#TAB ; 數值首地址放入DPTR中
MOV 40H,#40 ; 東南西北通行時間設置
MOV 41H,#40
MOV 30H,#40 ; 通行時間初始化
MOV 31H,#60
MOV P0,#4CH ; 初始化時南北通行並把交通燈狀態分別放在32H和33H中
MOV 32H,#4CH
MOV P2,#15H
MOV 33H,#15H
RET
; *** *** *** 顯示子程序
DIS: MOV P3,#0DFH ; 選中南北方向的十位數碼管
MOV A,30H ; 把顯示數據送人數碼管顯示
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P1,A ;
LCALL D1MS
MOV P3,#0EFH ; 選中南北方向的個位數碼管
MOV A,B ; 送入數碼管顯示
MOVC A,@A+DPTR
MOV P1,A
LCALL D1MS
MOV P3,#7FH ; 選中第東西方向的十位數碼管
MOV A,31H ; 送入數碼管顯示
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P1,A
LCALL D1MS
MOV P3,#0BFH ; 選中第東西方向的個位數碼管
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
LCALL D1MS
SETB P3.0
SETB P3.1
JNB P3.0,DIS_S ; 查詢是否第一個按鍵按下
JNB P3.1,DIS_E ; 查詢是否第二個按鍵按下
AJMP DIS_R ; 沒有鍵按下則返回
DIS_S:LCALL D5MS ; 按鍵去抖
JNB P3.0,DIS_SN
AJMP DIS_R
DIS_SN:MOV 40H,#50 ; 對通行時間從新分配,南北通行時間加長
MOV 41H,#30
AJMP DIS_R
DIS_E:LCALL D5MS ; 按鍵去抖
JNB P3.1,DIS_EW
AJMP DIS_R
DIS_EW:MOV 40H,#30 ; 東西通行時間加長
MOV 41H,#50
DIS_R:RET
; *** *** *** 定時中斷處理程序
DS_C: LJMP DS_R ; 接力跳轉
DSZD: PUSH ACC ; 保護現場
PUSH PSW
CLR TR0 ; 關定時器及中斷標志位並重新賦值
CLR TF0
MOV TL0,#0B0H
MOV TH0,#3CH
DJNZ R2,DS_C ; 判斷1m時間是否到達
MOV R2,#20 ; 到達重新賦值
DEC 30H ; 南北方向通行時間減一
MOV A,30H ; 把減一後的時間送入顯示存儲單元
; *** *** *** 南北通行到達最後4秒時黃燈閃爍
DS_10:CJNE A,#4,DS_11 ; 如果通行時間剩餘4秒
JNB SNF,DS_11 ; 判斷是否是南北通行
MOV P0,#8AH
MOV 32H, #8AH ; 把交通燈狀態存入存儲單元(後面類似)
DS_11:CJNE A,#3,DS_12 ; 不是剩餘3秒,返回
JNB SNF,DS_12 ; 不是南北通行時間,返回
MOV P0,#88H
MOV 32H, #88H
DS_12:CJNE A,#2,DS_13
JNB SNF,DS_13
MOV P0,#8AH
MOV 32H, #8AH
DS_13:CJNE A,#1,DS_14
JNB SNF,DS_14
MOV P0,#88H
MOV 32H, #88H
; *** *** ***
DS_14:JNZ DS_NE ; 通行時間沒有結束轉向改變東西方向的數碼管
CPL SNF ; 如果通行時間結束則對標志位取反
JNB SNF,DS_1 ; 判斷是否南北通行
MOV 30H,40H ; 是,點亮相應的交通燈
MOV P0,#4CH
MOV 32H,#4CH ; 存儲交通燈狀態
MOV P2,#15H
MOV 33H, #15H ; 存儲交通燈狀態
DS_NE:DEC 31H ; 東西方向通行時間減一
MOV A,31H ; 把通行剩餘時間送入顯示存儲單元
; *** *** *** 東西方向通行時間剩餘4秒鍾黃燈閃爍(程序注釋與南北方向類似 略)
DS_20:CJNE A,#4,DS_21
JB EWF,DS_21
MOV P0,#51H
MOV 32H, #51H
DS_21:CJNE A,#3,DS_22
JB EWF,DS_22
MOV P0,#41H
MOV 32H, #41H
DS_22:CJNE A,#2,DS_23
JB EWF,DS_23
MOV P0,#51H
MOV 32H, #51H
DS_23:CJNE A,#1,DS_24
JB EWF,DS_24
MOV P0,#41H
MOV 32H, #41H
; *** *** ***
DS_24:JNZ DS_R ; 東西方向時間沒有結束,返回
CPL EWF ; 對通行狀態取反
JNB EWF,DS_2 ; 東西方向通行時間到來,跳轉
MOV 31H,#80 ; 東西方向通行結束,重新顯示時間
MOV P0,#89H ; 點亮相應的交通燈
MOV 32H, #89H
MOV P2,#29H
MOV 33H, #29H
AJMP DS_R
DS_1: MOV 30H,#80 ; 南北通行時間結束,重新對顯示存儲單元賦值
MOV P0,#89H ; 執行轉彎狀態1
MOV 32H, #89H
MOV P2,#26H
MOV 33H, #26H
AJMP DS_NE
DS_2: MOV 31H,41H ; 東西方向開始通行,賦值予顯示存儲單元
MOV P0,#61H ; 點亮相應的交通燈
MOV 32H, #61H
MOV P2,#15H
MOV 33H, #15H
DS_R: SETB TR0
POP PSW ; 恢復現場
POP ACC
RETI
; *** *** *** 緊急中斷處理程序
URZD: PUSH ACC ; 保護現場
PUSH PSW
CLR IE0 ; 清除中斷標志位
CLR TR0 ; 關定時器
CPL URF ; 緊急事件標志位
JB URF,UR_CON ; 緊急結束;跳轉
MOV P0,#49H ; 各路口燈全顯示紅燈亮
MOV P2,#15H
AJMP UR_R
UR_CON:SETB TR0 ; 恢復正常交通
MOV A,32H
MOV P0,A
MOV A,33H
MOV P2,A
UR_R: POP PSW ; 恢復現場
POP ACC
RETI
; *** *** *** 查表指令0,1,2,3,4,5,6,7,8,9
TAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH
DB 7DH, 07H, 7FH, 6FH
; *** *** *** 延時5ms與1ms
D5MS: MOV R7,#5
D1MS: MOV R7,#10
MOV R6,#50
L1: DJNZ R6,$
DJNZ R7,L1
RET
Ⅷ 51單片機中 模擬軟體,匯編軟體, 編程器 晶元 集成開發環境軟體 之間的關系
你好!
模擬軟體通常是用來在電腦上模擬單片機運行狀況的。
匯編軟體是編譯工具,把匯編程序編譯成二進制代碼
編程器是硬體,用來把編譯好的二進制代碼寫入單片機
晶元,當然就是51單片機本身了
集成開發環境,就是開發51的程序的集成環境,在上面可以建立工程,編寫文件,編譯,模擬,甚至完成下載功能。
打字不易,採納哦!
Ⅸ MCS-51用匯編語言模擬
我是大學里的單片機老師,講講我學單片機的經歷。
五年前,我對單片機一竅不通,不知道Keil、Proteus、AT89S51/52、STC51等等。
但學校要求我給學生上單片機這門課,自學時間只有一個月。
我讓我的學生在網上查找到了Keil uVision2,
並且,學生在這個軟體下完成了一個簡單的跑馬燈程序(匯編)。
我當時只能是按照學校的要求死肯教材(北航 單片機原理與應用),
拚命理解教材里那些令人捉摸不透的內容。
這本教材的確差勁,程序無頭無尾,所介紹的晶元也都是過時的垃圾。
但是,這本教材是我國單片機的鼻祖。直到今天,很多高校都以它作為模板改編。
十天之後,我讓我的學生給我安裝了Keil uVision2,
並為我演示了跑馬燈程序從編寫到調試的全過程,總共約15分鍾。
我告訴我的學生說:我會了。
以後,凡是有不懂的問題,我就模仿那個跑馬燈程序編寫一個小小的程序,
用Keil uVision2模擬進行一步一步的分析,將教材里的所有語句都模擬分析過了。
並且,將教材里的指令進行重新分類歸納為40~50條最有用的指令,而不是111條指令。
一個月後,我終於能夠不太順利地講單片機原理與應用。
半年之後,我又是從我的學生那裡知道怎樣將程序用串口燒入單片機。
又過了半年,我還是從我的學生那裡知道怎樣將程序用USBASP燒入單片機。
又過了半年,我又從我的學生那裡知道怎樣用程序用Proteus模擬單片機程序。
。。。。。。
MCS-51系列單片機用匯編語言編程的軟體:
我推薦使用Keil uVision2(英文),不要使用Keil uVision3(漢化),
單片機開發一定要會英文的。
模擬的軟體使用Proteus 7 Professional。
參考書:(1)例說8051 (郵電出版社)
(2)Proteus教程(清華大學出版社)
(3)單片機原理與應用---基於Proteus和Keil C(電子出版社林立編)