目錄
中斷3個程序
第一個程序
第二個程序
第三個程序
DA轉換
Triangle
Triangle2
矩形波
顯示/鍵盤:
數碼管的動態顯示(C語言實現):
矩陣鍵盤(C語言實現)
加法、乘法
第二個例程
例程
例程
中斷3個程序
第一個程序
ORG 0000H
RESET: AJMP MAIN
ORG 000BH
AJMP IT0P
MAIN: MOV SP, #60H;
MOV TMOD, #01;
ACALL PT0M0;
HRER: AJMP HERE
PT0M0: MOV TL0, #0CH
MOV TH0, #0FEH
SETB ET0;
SETB EA;
SETB TR0;
RET
IT0P: MOV TL0, #0CH
MOV TH0, #0FEH
CPL P1.0;
RETI;
第二個程序
ORG 0000H
RESET: AJMP MAIN
ORG 000BH
AJMP IT0P
ORG 0100H
MAIN: MOV SP, #60H
MOV B, 0AH
ACALL PT0M0
HERE: AJMP HERE
PT0M0: MOV TMOD, #01H
MOV TL0, #
MOV TH0, #
SETB ET0
SETB EA
SETB TR0
RET
IT0P: MOV TL0,#
MOV TH0,#
JNZ B, LOOP
RTURN: RETI
第三個程序
ORG 0000H
RESET: AJMP MAIN
ORG 000BH
AJMP IT0P
ORG 001BH
AJMP IT1P
ORG 1000H
MAIN: MOV SP, #60H
ACALL PT0M2
LOOP: MOV C, F0
JNC LOOP
HERE: AJMP HERE
PT0M0: MOV TMOD, #25H
MOV TL0, #FFH
MOV TH0, #FFH
SETB ET0
MOV TL1, #06H
MOV TH1, #06H
CLR F0
SETB EA
SETB TR0
RET
IT0P: CLR TR0
SETB F0
RETI
IT1P: CPL P1.0
RETI
DA轉換
Triangle
ORG 0100H
START: MOV R0, #0FEH
MOV A, #00H
LOOP: MOVX @R0, A
INC A
JNZ LOOP
Triangle2
ORG 0100H
START: MOV R0, #0FEH
MOV A, #00H
UP: MOVX @R0, A
INC A
JNZ UP
DOWN: DEC A
MOVX @R0, A
JNZ DOWN
AJMP UP
矩形波
ORG 0100H
START: MOV R0, #0FEH
MOV A, #data1
MOVX @R0, A
ACALL DELAY1
MOV A, #data2
MOVX @R0, A
ACALL DELAY2
顯示/鍵盤:
數碼管的動態顯示(C語言實現):
#include #define uchar unsigned char #define uint unsigned int #define DigW P1 //設置P1口為位選口(選擇第幾位的) #define DigD P2 //P2為段選,(選擇數碼管的哪段亮起來的) uchar show[] = {5, 2, 0, 1, 3, 1, 4}; uchar DigT[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71}; //共陰極數碼管0~9,a-f段碼表 /**************************延時函數*************************/ void delay() { uint j; for (j = 0; j < 150; j++); } /**************************主函數*************************/ void main(void) { Dig_W = 0x00;//關數碼管 Dig_D = 0x00; while (1) { uchar temp = 0x80; for (uchar i = 0; i < 7; i++) { Dig_W = tmep; Dig_D = DigT[show[i]+1]; delay(); temp = temp >> 1; } } } 矩陣鍵盤(C語言實現) #include #define uchar unsigned char #define uint unsigned int #define Dig_W P1 #define Dig_D P2 #define io_KEY P3 uchar key_T[] = {0xee, 0xde, 0xbe, 0x7e, 0xed, 0xdd, 0xbd, 0x7d, 0xeb, 0xdb, 0xbb, 0x7b, 0xe7, 0xd7, 0xb7, 0x77}; //按鍵值 uchar dis_T[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71}; //共陰極數碼管0~9,a-f段碼表 uchar zhi = 0; /**************************延時函數*************************/ void d_ms() { uint j; for(j=0;j<150;j++); } /**************************顯示函數*************************/ void display(uchar num) { uchar i, temp; temp = 0x80; Dig_W = temp; Dig_D = dis_T[num]; temp = temp >> 1; } uint Scanner() { int 列 = 0, 行 = 0, 按鍵 = 0, a; io_KEY = 0xf0; //P2口后4位置高電平前4位置低電平,當有按鍵按下時確定列數 while (io_KEY == 0xf0); //判斷P2口是否有信號輸入 列 = io_KEY; //保存列數 delay(); io_KEY = 0x0f; //P2口后4位置低電平前4位置高電平,當有按鍵按下時確定行數 while (io_KEY == 0x0f); //判斷P2口是否有信號輸入 行 = io_KEY; //保存行數 按鍵 = 列 | 行; return 按鍵; } /**************************主函數*************************/ void main(void) { uint KeyV = 0; Dig_W = 0x00;//關數碼管 Dig_D = 0x00; while (1) { KeyV = Scanner(); //得到按鍵值 for (int i = 0; i < 16; i++)//判斷按鍵值 { if (key_T[i] == KeyV) { zhi = i; break; } } display(zhi); } } 加法、乘法 MOV R0,#60H MOV R2,#10H CLR A TU: MOV @R0,A INC R0 INC A DJNZ R2,TU MOV R0, #60H MOV R1, #70H MOV R2, #10H TT: MOV A,@R0 MOV @R1,A INC R0 INC R1 DJNZ R2,TT RET END 第二個例程 MOV 70H, #12H MOV 71H, #90H MOV 72H, #78H MOV 60H, #56H MOV 61H, #34H MOV 62H, #12H MOV R0,#70H MOV R1,#60H MOV R2,#03H CLR CY LOOP:MOV A,@R0 ADDC A,@R1 DA A MOV @R1,A INC R0 INC R1 DJNZ R3,LOOP END 例程 MOV 30H,#45H LOOP: MOV A,30H SWAP A ANL A,#0FH MOV 31H,A MOV A,30H ANL A,#0FH MOV 32H,A END MOV 32H,#98H MOV 31H,#76H MOV 30H,#54H MOV R2,#04H LOOP: CLR CY MOV A,30H RLC A MOV 30H,A MOV A,31H RLC A MOV 31H,A MOV A,32H RLC A MOV 32H,A DJNZ R2,LOOP RET END 例程 ORG 0000H START: MOV R0,#60H MOV DPTR,#QW1 MOV R5,#0 MOV R7,#10H LOOP: MOV A,R5 MOVC A,@A+DPTR MOV @R0,A INC R0 INC R5 DJNZ R7,LOOP LJMP QW2 QW1: DB 60H,61H,62H,63H,64H,65H,66H,67H DB 68H,69H,6AH,6BH,6CH,6DH,6EH,6FH QW2:MOV R0,#60H MOV R1,#70H MOV R5,#0FH
上一篇:51單片機課程設計:基于51單片機的超聲波測距
下一篇:最后一頁
推薦閱讀
史海拾趣
Atmel(Microchip)一直注重技術創新和產品升級。公司不斷投入研發資金,推動新產品的研發和現有產品的改進。通過引入新技術、優化產品設計等方式,Atmel的產品在性能、功耗、可靠性等方面都得到了顯著提升。這些創新成果不僅滿足了客戶日益增長的需求,也為公司贏得了更多的市場份額。
面對日益激烈的市場競爭,格萊爾積極推進數字化轉型和智能化升級。公司引入了ERP、EHR、OA等信息化系統,實現了生產、管理、銷售等各個環節的信息化和智能化。同時,格萊爾還加大了對自動化生產設備的投入和研發力度,提高了生產效率和產品質量。這些舉措不僅提升了企業的競爭力,也為格萊爾在未來的發展中注入了新的動力。
隨著全球化趨勢的加速,大雅智能積極實施國際化戰略,拓展海外市場。通過與國外知名企業的合作與交流,大雅智能引進先進技術和管理經驗,不斷提升自身的核心競爭力。同時,大雅智能還積極參加國際展覽和論壇活動,展示其創新成果和產品實力。這些努力讓大雅智能在國際舞臺上嶄露頭角,為全球消費者提供更多優質的電子產品。
DDD公司成立于1964年,當時正值電子行業的蓬勃發展期。創始人看到了延遲線技術在計算機和電信領域中的巨大潛力,決定投身其中。然而,初期的市場并不如預期般順利,公司面臨著資金短缺、技術難題和市場競爭等多重壓力。但DDD公司的創始人憑借對技術的熱情和堅定的信念,帶領團隊不斷研發新產品,優化生產工藝,逐漸在市場中樹立了自己的品牌形象。
BERNSTEIN公司的歷史可以追溯到Weimar時期,當時Bernstein兄弟在萊比錫創立了“Monopol”公司,專注于為電氣建筑服務控制系統生產和制造低壓產品。初創時期,公司面臨著資金短缺、市場競爭激烈等諸多困難。然而,Bernstein兄弟憑借對技術的執著追求和對市場的敏銳洞察,成功研發出了一系列具有競爭力的產品,并逐漸在市場上站穩腳跟。
豪華的單片機開發系統498元 可穩定視頻輸出的: S3C2410 ARM9開發板780元DSP5402學習開發板II200元 暑期大優惠:S3C44B0開發板(標準版)350元 單片機以太網開發板 180元 DSP5402學習開發板II200元 LABTOOL-48UXP &nb ...… 查看全部問答∨ |
|
最早是在網上看的《杜拉拉升職記1》,因為不愿意充錢而沒看完。不久前朋友又送了本《杜拉拉升職記2》,還沒看完,感覺上跟其他職場小說沒有太大不同,就是純粹編一個故事把想說的道理講出來。不知道做技術的人看這本小說的多嗎?或者說男生看杜拉拉 ...… 查看全部問答∨ |
所謂的百萬高清在目前行業市場上的應用占有率幾乎是呈現0.5:50的狀態。目前銷量最大的應該是紅外機---球機---普通槍機。 一個產品系列的推出或者所謂的引領行業市場變革,其成功與否最總要的一點就是市場占有率。 相對市場而言,百萬高清或網絡 ...… 查看全部問答∨ |
我現在正在編寫一個從linux聲卡獲取聲音的程序。 我將從/dev/dsp 讀取的數據存在test.wav 然后進行播放 但是播放出來的聲音好像不連續。 我懷疑是聲卡采集數據過快,read函數讀取較慢,導致聲卡的buffer被覆蓋了。 請問各位大俠:我怎么樣才能 ...… 查看全部問答∨ |
|
如何去掉開發板s3c2410的串口自動反饋信息?比如說,把開發板和pc連在一起,打開pc上的串口軟件,再打開開發板上(wince5.0系統)的串口軟件就會在pc上串口軟件上收到一些信息,每當板子接收到數據時,pc上的串口軟件就會收到類似 \"+SL GETSTATUS ...… 查看全部問答∨ |
本帖最后由 dontium 于 2015-1-23 13:36 編輯 用軟件仿真了幾個簡單的積分電路,可是結果輸出波形出現直流分量,不知為何,感覺輸出應該也是關于Y軸對稱的呀。 圖中紅色為信號源,橙色為輸出信號。 本人在模擬方面算是新手吧,還望大家指教。 ...… 查看全部問答∨ |
我希望能創建:(1)電子產業企業版面可以展現目前的前沿科技(2)每個小欄目如單片機欄目,可以再細分下,1)單片機資料區2)單片機競賽區 3)單片機應用區---(3)搭建一個人才展現區,供企業與個人互選,為高校、專業技術人才為人生的道路提供一 ...… 查看全部問答∨ |