當前位置:首頁 » 編程軟體 » a單片機編程

a單片機編程

發布時間: 2022-11-08 05:20:54

A. 單片機編程用六中方法使a中內容清零

為什麼用6中方法呢?直接給a賦值0,即a=0;或者,將一個變數b賦值給a,即a=b(當然賦值前b的值為0,b可以是程序中定義的變數、單片機的寄存器、寄存器的某一位);或者,將一個變數b取反賦值給a,即a=b(當然賦值前b的值為非0,b可以是程序中定義的變數、單片機的寄存器、寄存器的某一位);等等
a=0;
a=a&&0;
a=!1;

B. 關於單片機編寫程序 將A中的二進制數變換成3為BCD碼 並將百,十,個位數分別防禦內部RAM的50H 51H 52H中

這程序也寫的太復雜了!既然51單片機有DIV指令,並且只是把A中的數字轉變為BCD,那就用DIV直接運算:
MOV A,#0FDH
MOV B,#100
DIV AB
MOV 50H,A
MOV A,B
MOB B,#10
DIV AB
MOV 51H,A
MOV 52H,B
計算完成,這樣50H就是百位數,51H是十位數,52H是個位數

C. 單片機編程將累加器A中的二進制數變成BCD碼,並將百、十、個位數分別寫入內部RAM中的50H、51H、52H中。

mov b,#10

div ab

mov 50h,a

mov a,b

da a

mov 52h,a

anl 52h,#0fh

swap a

anl a,#0fh

mov 51h,a

end

D. 利用單片機編程:a.開機後從LED1到LED8依次點亮後全熄滅,狀態變化時間間隔為1秒;

#include <REG51.h> //51頭文件
/*********************************************************************************************/
#define DY_PORT P1 //設置LED連接的I/O組
#define DY_SPEED 100 //設置每一個明亮級的停留時間(值域:0~65535)
/*********************************************************************************************
bit [自定義名] ; //定義一個位(位的值只能是0或1)例:bit LED
#define [代替名] [原名] //用代替名代替原名(可以方便修改常改或調試的值)例:#define LED P1
sbit [自定義名] = [系統位名] ; //自定義系統位名。例:sbit Add_Key = P3 ^ 1;
unsigned char [自定義名] ; //定義一個0~255的整數變數.例:unsigned char a;
unsigned int [自定義名] ; //定義一個0~65535的整數變數
/*********************************************************************************************/
void delay (unsigned int a){ // 1ms延時程序
unsigned int i;
while( --a != 0){
for(i = 0; i < 600; i++);//STC單片機在外部晶振為12MHz時i值上限為600
} //AT89C51單片機在外部晶振為12MHz時i值上限為125
}
/*********************************************************************************************/
void main(void){
unsigned int i;
unsigned int temp;
while(1){
temp=0x01;
for(i=0;i<8;i++){ //8個流水燈逐個閃動
DY_PORT=~temp;
delay(DY_SPEED); //調用延時函數
temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++){ //8個流水燈反向逐個閃動
DY_PORT=~temp;
delay(DY_SPEED); //調用延時函數
temp>>=1;
}
temp=0xFE;
for(i=0;i<8;i++){ //8個流水燈依次全部點亮
DY_PORT=temp;
delay(DY_SPEED); //調用延時函數
temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++){ //8個流水燈依次反向全部點亮
DY_PORT=temp;
delay(DY_SPEED); //調用延時函數
temp>>=1;
}
}
}

E. 單片機編程將累加器A中的二進制數變成BCD碼,並將百、十、個位數分別寫入內部RAM中的50H、51H、52H中。

這程序也寫的太復雜了!既然51單片機有div指令,並且只是把a中的數字轉變為bcd,那就用div直接運算:
mov
a,#0fdh
mov
b,#100
div
ab
mov
50h,a
mov
a,b
mob
b,#10
div
ab
mov
51h,a
mov
52h,b
計算完成,這樣50h就是百位數,51h是十位數,52h是個位數

F. 單片機編程中R6,R7,R0,A是什麼

樓上誤解了,沒看清題意,樓上說的那幾個是PIC單片機的,樓主說的是51單片機的
R6R7R0是51單片機中的工作寄存器組中的成員用於存放數據,這樣的工作寄存器組共有四組,由程序狀態字PSW中的RS0、RS1控制,
A是累加器,幾乎是一個萬能的數據寄存器,單片機一大部分的運算需要通過它來完成,

熱點內容
java人才 發布:2025-05-14 12:29:10 瀏覽:649
如何打開軟密碼 發布:2025-05-14 12:28:55 瀏覽:427
七牛存儲待遇 發布:2025-05-14 12:27:20 瀏覽:422
C語言a35a4a5 發布:2025-05-14 11:53:48 瀏覽:813
android隱藏item 發布:2025-05-14 11:43:56 瀏覽:328
javawebeclipse編譯 發布:2025-05-14 11:35:24 瀏覽:938
可編程式控制制器試題 發布:2025-05-14 11:25:32 瀏覽:121
dsp混合編程 發布:2025-05-14 11:23:10 瀏覽:250
mysql添加存儲過程 發布:2025-05-14 11:23:01 瀏覽:882
房車旅遊自媒體有腳本嗎 發布:2025-05-14 11:18:18 瀏覽:127