導航:首頁 > 操作系統 > MCS51單片機應用開發實用子程序

MCS51單片機應用開發實用子程序

發布時間:2022-07-08 11:39:31

❶ MCS51,四位元組浮點數的四則運運算元程序

程序很長,直接告訴你不好看懂,可設法搞到北京航空航天大學出版社的「MCS-51/196單片機浮點程序和實用程序」這本書,有詳細介紹。該社網址:www.buaapress.com.cn

❷ 那位有51單片機的實用子程序,c語言的

給個簡單的吧,在C中稱為函數調用由主函數調用其他函數,除主函數不能被調用外其他函數之間可任意調用

#include<reg52.h> //頭文件

void delay(unsigned long w)
{
while(w--);
}

void zuoyi() //函數功能使P0口流水燈
{
unsigned char c;

for(c=0x01;x!=0;c<<=1)
{
P0=c;
delay(50000); //在此函數中調用延時函數
}
}

void main()
{
while(1)
{
zuoyi(); //在主函數中調用子函數
}
}

❸ 單片機8051基礎編程

51程序庫
http://www.programfan.com/blog/article.asp?id=19116
http://workingon.bokee.com/viewdiary.12218674.html

MCS-51單片機實用子程序庫
http://blog.tom.com/fangqidong/article/416.html

❹ 誰有MCS51系列單片機中調用指令(LCALL和ACALL)和RETI指令在程序中的實際應用例子

CALL、RETI等等都是是匯編語言,看看這里:
http://hi..com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/3aec3b94b94e1a46d1135e98.html

另外,ACALL、LCALL,在編程的時候,可以統一寫成CALL,
編譯軟體來智能的確認,應該使用ACALL還是LCALL。

❺ 利用mcs-51單片機指令系統設計一段交通燈輪流點亮的程序

參考程序, 具體留言商議。

ORG 0000H
LJMP MAIN
ORG 0100H
MAIN:
MOV SP,#60H
; LCALL DIR ;調用日期、時間顯示子程序
LOOP:
MOV P1,#0FFH
LJMP TEST
LCALL ROAD1 ;路口1的車直行時各路口燈亮情況
LCALL DLY30s ;延時30秒
MOV P1,#0FFH ;恢復P1口高電平
LCALL RESET ;恢復8155各口為高電平
LCALL YELLOW1 ;路口1的車直行-->路口2的車直行黃燈亮情況
LCALL DLY5s ;延時5秒
LCALL RESET ;恢復8155各口為高電平
MOV P1,#0FFH ;恢復P1口
LCALL ROAD2 ;路口2的車直行時各路口燈亮情況
LCALL DLY30s ;延時30秒
LCALL RESET ;恢復8155A 、B口為高電?
MOV P1,#0FFH ;恢復P1口高電平
LCALL YELLOW2 ;路口2的車直行-->路口3的車直行黃燈亮情況
LCALL DLY5s ;延時5秒
LCALL RESET ;恢復8155A 、B口為高電?
MOV P1,#0FFH ;恢復P1口高電平
LCALL ROAD3 ;路口3的車直行時各路口燈亮情況
LCALL DLY30s ;延時30秒
LCALL RESET ;恢復8155A 、B口為高電?
MOV P1,#0FFH ;恢復P1口高電平
LCALL YELLOW3 ;路口3的車直行-->路口4的車直行黃燈亮情況
LCALL DLY5s ;延時5秒
LCALL RESET ;恢復8155各口為高電平
MOV P1,#0FFH ;恢復P1口高電平
LJMP TEST
LCALL ROAD4 ;路口4的車直行時各路口燈亮情況
LCALL DLY30s ;延時30秒
SETB P1.5 ;恢復P1.5高電平
SETB P1.4 ;恢復P1.4高電平
MOV DPTR,#0FFFFH ;恢復8155各口為高電平
LCALL YELLOW4 ;路口4的車直行-->路口1的車直行黃燈亮情況
LCALL DLY5s ;延時5秒
SETB P1.6 ;恢復P1.6高電平
SETB P1.3 ;恢復P1.3高電平
MOV DPTR,#0FFFFH ;恢復8155各口為高電平
LJMP LOOP
;路口1的車直行時各路口燈亮情況3a3b2p綠3c紅+4a4b4c3p全紅+1c綠1a1b4p紅+2c綠2a2b1p紅
ROAD1:
MOV DPTR,#7F00H ;置8155命令口地址;無關位為1)
MOV A,#03H ;A口、B口輸出,A口、B口為基本輸入輸出方式
MOVX @DPTR,A ;寫入工作方式控制字
INC DPTR ;指向A口
MOV A,#79H ;1a1b4p紅1c綠2a2b1p紅
MOVX @DPTR,A
INC DPTR ;指向B口
MOV A,#0E6H ;3a3b2p綠3c紅4a4b3p紅
MOVX @DPTR,A
MOV P1,#0DEH ;4c紅2c綠
RET

❻ MCS-51單片機,利用定時計數器設計一個程序,匯編語言,最好有注釋,很簡單的就可以

ORG
0000H
JMP
BEGIN
ORG
0030H
TABLE:
;
共陰極數碼管顯示代碼表
DB
3FH,06H,5BH,4FH,66H
;01234
DB
6DH,7DH,07H,7FH,6fh
;56789
DELAY:
MOV
R5,#20
LOOP4:
MOV
R6,#50H
;延時20X20ms
LOOP5:
MOV
R7,#100
DJNZ
R7,$
DJNZ
R6,LOOP5
DJNZ
R5,LOOP4
RET
;---------------------------------------
BEGIN:
MOV
P2,#0FFH
;P2口置高電平,准備接收信號
MOV
R4,#0
MOV
A,R4
;R4位標志值送A寄存器
AGAIN:
MOV
DPTR,#TABLE
MOVC
A,@A+DPTR
MOV
P1,A
LOOP1:
MOV
A,P3
;
接收p3口的搶答信號
CPL
A
JZ
LOOP1
LOOP2:
RRC
A
;有人搶答信號則逐次移動判斷哪一位搶答
INC
R4
JNC
LOOP2
;********************
MOV
A,R4
MOVC
A,@A+DPTR
;找到相應位顯示代碼
MOV
P1,A
LEDDIS:
MOV
A,#0FFH
CLR
C
LEDDIS1:
RLC
A
DJNZ
R4,LEDDIS1
MOV
P0,A
LOOP3:
JNB
P2.2,BEGIN
;若主持人按下復位信號鍵,則轉向主程序
CPL
P2.0
;若沒按復位信號鍵,則通過p2.2口給出高低信號驅動蜂鳴器
LCALL
DELAY
;調用延時子程序
SJMP
LOOP3
;p2.2口反復間隔0.4s變化,驅動蜂鳴器
END

❼ MCS51單片機,中斷服務程序的返回指令和子程序的返回指令有什麼區別是多少

RET用於一般程序的返回
RETI用於中斷函數的返回
以上是一般單片機書籍簡紹的,然而在實際應用中,我發現,在程序返回中一樣可以使用RETI,而在中斷返回中卻無法使用RET,究其原因是因為RETI比RET多做一件事情就是將「優先順序生效」觸發器清零
原來在8051構架中--中斷系統中含有兩個不可定址的「優先順序生效」觸發器。一個用於指出CPU是否正在執行高優先順序的中斷服務程序,這個觸發器為1時,系統將屏蔽所有的中斷請求;另一個則指出CPU是否正在執行低優先順序中斷服務程序,該觸發器為1時,將阻止除高優先順序以外的一切中斷請求。由此可見,若要響應同級甚至是低級中斷請求,必須使得該「優先順序生效」觸發器清零。但該觸發器又是不可定址的,所以無法用軟體直接清零。」

❽ 用MCS51單片機的匯編語言,編二級循環嵌套子程序,實現50毫秒的延時,震盪頻率為12MHz,要寫出計算過程。

要想精確定時,應該用定時器。
用子程序來延時的應用場合,基本都是不要求精確的。

所以,其延時時間,並沒有必要精確計算。
一般,都是估計一下、試驗一下,差不多就行了。

計算過程,沒有。

❾ 設計一個MCS—51系列單片機具體應用的例子,並進行詳細的解釋

;簡單的時鍾程序

BUFF_KEY EQU 21H ;鍵盤鍵
LED1 EQU 22H ;數碼管顯示緩存
LED2 EQU 23H
LED3 EQU 24H
LED4 EQU 25H
LED5 EQU 26H
LED6 EQU 27H
LED_LP EQU 28H ;T0鍵盤顯示掃描緩存
HOR EQU 30H ;小時值緩存
MIN EQU 31H ;分鍾值緩存
SEC EQU 32H ;秒值緩存
F_BEEP BIT 01H
LED_PORT EQU P0
DIG_PORT EQU P2

SW1 BIT P3.0
SW2 BIT P3.1
SW3 BIT P3.2
SW4 BIT P3.3
SW5 BIT P3.4
SW6 BIT P3.5
BEEP BIT P1.6

org 000h
JMP main
ORG 00BH
JMP T0_INT
ORG 100H
MAIN: MOV SP ,#40H
MOV PSW,#00H
MOV R0,#7FH ;初始化RAM區,
CLR_RAM:MOV A,#00H
MOV @R0,A
DJNZ R0,CLR_RAM
MOV P1,0FFH ;INIT
MOV P2,0FFH
MOV P0,0FFH
MOV P3,0FFH
MOV HOR,#12
MOV TMOD,#21h
MOV TH0,#240 ;T0=4MS
MOV TL0,#96
SETB TR0
SETB ET0
SETB EA

WAIT_KEY: ;等候按鍵!
JNB SW1,SW1_OK
JNB SW2,SW2_OK
JNB SW3,SW3_OK
JNB SW4,SW4_OK
JNB SW5,SW5_OKA
JNB SW6,SW6_OKA
JMP WAIT_KEY
SW5_OKA: JMP SW5_OK
SW6_OKA: JMP SW6_OK
SW1_OK: MOV A,HOR
CJNE A,#24,SW1_OVER
MOV HOR,#00H
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
CLR F_BEEP
JMP WAIT_KEY
SW1_OVER:INC HOR ;時加1
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
CLR F_BEEP
JMP WAIT_KEY

SW2_OK: MOV A,HOR
CJNE A,#00,SW2_OVER
MOV HOR,#23
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
CLR F_BEEP
JMP WAIT_KEY
SW2_OVER:DEC HOR ;時減1
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
JMP WAIT_KEY

SW3_OK: MOV A,MIN
CJNE A,#59,SW3_OVER
MOV MIN,#00H
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
CLR F_BEEP
JMP WAIT_KEY
SW3_OVER:INC MIN ;分加1
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
CLR F_BEEP
JMP WAIT_KEY

SW4_OK: MOV A,MIN
CJNE A,#00,SW4_OVER
MOV MIN,#59
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
CLR F_BEEP
JMP WAIT_KEY
SW4_OVER:DEC MIN ;分減1
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
CLR F_BEEP
JMP WAIT_KEY

SW5_OK: MOV A,SEC
CJNE A,#59,SW5_OVER
MOV SEC,#00H
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
CLR F_BEEP
JMP WAIT_KEY
SW5_OVER:INC SEC ;秒加1
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
CLR F_BEEP
JMP WAIT_KEY

SW6_OK: MOV A,SEC
CJNE A,#00,SW6_OVER
MOV HOR,#59
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
CLR F_BEEP
JMP WAIT_KEY
SW6_OVER:DEC SEC ;時減1
SETB F_BEEP
CLR BEEP
LCALL DEL
SETB BEEP
CLR F_BEEP
JMP WAIT_KEY

DEL: MOV R5,#03 ;為演示方便,人為插入的延時
DEL01: MOV R6,#200
DEL02: MOV R7,#200
DJNZ R7,$
DJNZ R6,DEL02
DJNZ R5,DEL01
RET

BIN_BCD: MOV B,#10
DIV AB
RET

;------------- T0 INTRRUPT 數碼管掃描定時中斷---------------------------
T0_INT: PUSH ACC
PUSH PSW
MOV TH0,#240 ;T0=4MS
MOV TL0,#96
INC LED_LP
MOV A,LED_LP
CJNE A,#250,CONT_SCAN ;250*4MS=1S
MOV LED_LP,#00H
INC SEC
MOV A,SEC
CJNE A,#60,CONT_SCAN
MOV SEC,#00H
INC MIN
MOV A,MIN
CJNE A,#60,CONT_SCAN
MOV MIN,#00H
INC HOR
MOV A,HOR
CJNE A,#24,CONT_SCAN
MOV HOR,#00H
clr beep
clr p1.0
lcall del
setb beep
setb p1.0
CONT_SCAN:MOV A,SEC
LCALL BIN_BCD
MOV LED6,B
MOV LED5,A
MOV A,MIN
LCALL BIN_BCD
MOV LED4,B
MOV LED3,A
MOV A,HOR
LCALL BIN_BCD
MOV LED2,B
MOV LED1,A
MOV A,LED_LP
MOV B,#06
DIV AB
MOV A,B
RL A
MOV DPTR,#TAB_SCAN
JMP @A+DPTR
TAB_SCAN: AJMP SCAN_L1
AJMP SCAN_L2
AJMP SCAN_L3
AJMP SCAN_L4
AJMP SCAN_L5
AJMP SCAN_L6
SCAN_L1: MOV DIG_PORT,#11111110B
MOV A,LED1
JMP END_SCAN
SCAN_L2: MOV DIG_PORT,#11111101B
MOV A,LED2
JMP END_SCAN
SCAN_L3: MOV DIG_PORT,#11110111B
MOV A,LED3
JMP END_SCAN
SCAN_L4: MOV DIG_PORT,#11101111B
MOV A,LED4
JMP END_SCAN
SCAN_L5: MOV DIG_PORT,#10111111B
MOV A,LED5
JMP END_SCAN
SCAN_L6: MOV DIG_PORT,#01111111B
MOV A,LED6
END_SCAN: MOV DPTR,#TAB_LED
MOVC A,@A+DPTR
MOV LED_PORT,A
JNB F_BEEP,EXIT_T0
CLR BEEP
EXIT_T0: POP PSW
POP ACC
RETI

TAB_LED: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;共陽字碼表

END

❿ 單片機,利用MCS-51集成開發環境編程:

A005光碟目錄

1、一組C-51的程序設計 2、C51設計遙控器
3、Franklin C-51手冊 4、一個C51討論組的壓縮包1
5、FrankLin For Windows使用經驗談 6、AT89C 系列單片機解密原理
7、一個C51討論組的壓縮包 8、微型列印機的C語言源程序
9、6B595或74HC595的C語言源程序 10、24C02串列EEPROM的C語言源程序
11、日歷時鍾DS12887或146818的C語言源程序 12、串列4路DAC TLC5620的C語言源程序
13、串列8位ADC TLC0831或TLC0832的C語言源程序 14、電力載波晶元PM2300與89C2051的介面電路
15、80C31與PC機AT匯流排介面卡 16、感測器信號採集電路
17、雙音頻紅外接收和5087鍵盤電路 18、雙音頻8870接收電路
19、雙音頻紅外遙控器發射電路 20、用74373,74573鎖存器擴展I/O埠的方法
21、用74164串入並出移位寄存器擴展89C2051輸出埠 22、用74165並入串出移位寄存器擴展89C2051輸入埠
23、6位LED數碼管顯示模塊 24、8位LED顯示板
25、MPLAB集成開發環境軟體 26、MPASM用戶指南(包括MPLINK和MPLIB)
27、1000米語音立體聲調頻發射

28、315M遙控發射/接收電路的製作
29、微波報警器 30、定時控制器
31、裝在火柴盒裡的竊聽器
32、遠距離FM調頻發射電路

33、10公里雙向可視對講系統 34、LED顯示電腦電子鍾
35、可直接用於無線發射的UHF頻段調制盒 36、調頻廣播發射機
37、一個多用途信號發生器
38、實用電動窗簾電路
39、無線電遙控發射、接收頭的製作 40、串列E2PROM--24C××讀寫器
41、PIC單片機編程器的自製 42、初學單片機幾個不易掌握的概念

43、用單片機實現通用存貯器IC卡的讀寫 44、EM78系列單片機原理與應用技術
45、印刷電路板的基本設計方法和原則要求 46、Intel hex 文件格式解密
47、自製2051單片機編程器 48、AT89C系列單片機燒寫器的自製
49、利用80C31單片機串列口實現多個LED

顯示的一種簡單方法
50、基於PIC單片機的智能IC卡燃氣表電控系統設計

51、由單片機和多片DS1820組成的

多點溫度測控系統 52、MCS-51系列單片機在SDH系統中的應用

53、異種單片機共享片外存儲器及其與微機通信的方法 54、基於Intel80C196的通用伺服控制系統

55、12位A/D轉換器ADS7804與51單片機的介面及程序設計

56、12位500KHz六通道同時采樣的A/D轉換器ADS7864及應用

57、單片機大容量FLASHRAM的擴展
58、單片機外圍電路中的低功耗技術

59、基於MC68HC05CL16的可配置型電話計費器的設計和實現
60、W78E516及其在系統編程的實現

61、AVR單片機在柴油機轉速測量中的應用

62、串列EEPROM X24128及其與AT89C51的介面及編程

63、用多路復用器擴展MCU串口

64、一種高性能攜帶型PIC單片機濕度檢測儀的研製

65、單片機微處理器AT89C51在時隙變換和

控制中的應用
66、自製MSP430FET140模擬器的原理圖和PCB板圖

閱讀全文

與MCS51單片機應用開發實用子程序相關的資料

熱點內容
怎麼下載小愛同學音箱app 瀏覽:552
python佔位符作用 瀏覽:76
javajdbcpdf 瀏覽:541
php網頁模板下載 瀏覽:190
python試講課pygame 瀏覽:407
安居客的文件夾名稱 瀏覽:677
家裡伺服器如何玩 瀏覽:449
網站源碼使用視頻 瀏覽:746
stc89c52單片機最小系統 瀏覽:452
郵件安全證書加密 瀏覽:416
雲伺服器如何訪問百度 瀏覽:279
常州電信伺服器dns地址 瀏覽:839
用小方塊製作解壓方塊 瀏覽:42
圖像壓縮編碼實現 瀏覽:68
特色功能高拋低吸線副圖指標源碼 瀏覽:71
西方哲學史pdf羅素 瀏覽:874
python最常用模塊 瀏覽:184
溫州直播系統源碼 瀏覽:112
程序員在上海買房 瀏覽:384
生活解壓游戲機 瀏覽:909