51單片機模塊化編程
Ⅰ 51單片機模塊化編程怎麼位定義
模塊不太了解,對於位的話.
就是bit和sbit,就搞定位定義了.
Ⅱ 模塊化編程時51單片機怎樣定義埠
單片機輸出低電平時,一個標准TTL門的低電平輸入電流是-1mA(負號表示從TTL門向外流),電流是灌入單片機的;單片機輸出高電平時,TTL門高電平輸入電流40μA。
Ⅲ 關於51單片機模塊化編程的函數申明問題 (//write_com(); //這里的這個函數要不要先申明呢)
把被調用的子程序放在調用函數的上方,把所有子程序放在主程序的前面,這樣就不用在前面聲明了。
Ⅳ 在51單片機中,定時器0中斷用模塊化方法編程
#include<reg51.h>
#defineu16unsignedint
#defineu8unsignedchar
codeu16sj_tab[]={800,400,200,100};//每個檔位對應的時間
u8setsj=0;//檔位
u16jsflag;
#defineLEDP2
codeu8led_tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,};//LED亮的方式
u8ledflag=0;
/****************************************/
voidinit() //初始化函數
{TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;
}
/*********按鍵掃描******/
sbitk=P3^2;
u8key(){
staticu8ms;
if(k==0){//檢測到0
if(ms<10)ms++;
if(ms==5)return0;//連續5次掃描都為0,
}
elsems=0;
return1;
}
/***********************************/
u8count=0; //計數
voidmain()//主函數
{
init();//系統初始化
jsflag=sj_tab[setsj];//初始載入時間
TR0=1;//定時器開始計時
while(1){
if(key()==0){//按鍵按下
if(++setsj>=4)setsj=0;//檔位+1,加到最大後歸0
}
LED=led_tab[ledflag];
}
}
/****************************/
voidtimer0()interrupt1//1ms定時器
{
TH0=(65536-1000)/256;//重載初值
TL0=(65536-1000)%256;
if(jsflag>0)jsflag--;//1ms減1
if(jsflag==0){//減到0
jsflag=sj_tab[setsj];//重載時間
if(++ledflag>=8)ledflag=0;
}
}
Ⅳ 求大神關於51單片機模塊化編程問題
你好:
你只要在iic的.c文件中包含iic的.h文件就可以了。
另,如果iic的.c文件涉及操作到51中的寄存器,還要包含reg51.h。
且,.c和.h文件都要放到編譯器所在文件的include下。
先試試吧。
希望我的回答能幫助到你。
Ⅵ 大神們,請問怎麼把定時器進行模塊化編程,我試了好多次都編譯不成功,定時程序可以模塊化編程的嗎請給
你的主控晶元和編譯環境都沒給啊,基於51單片機還是stm32啥的,說清楚啊
Ⅶ 51單片機定時計數器模塊化編程及標志位求教,求以簡單程序,謝了
/*right 2007,ShangHai HaoTun Electronic Technology co.,Ltd
*
*This sample is used for Timer0 16bit timer mode.
*
*write by Shifang 2007-4-26
*
*V1.1
*/
#include<reg52.h>
sbit LED=P1^2;
void Init_Timer0(void)
{
TMOD |= 0x01;
TH0=0x00; /* Init value */
TL0=0x00;
EA=1; /* interupt enable */
ET0=1; /* enable timer0 interrupt */
TR0=1;
}
main()
{
Init_Timer0();
while(1);
}
void Timer0_isr(void) interrupt 1 using 1
{
TH0=0x00; /* Init value */
TL0=0x00;
LED=~LED;//指示燈反相
}以上是定時器0的編程用的是at89s52晶元fosc用的12mhz的
/*right 2007,ShangHai HaoTun Electronic Technology co.,Ltd
*
*This sample is used for Timer1 16bit timer mode.
*
*write by Shifang 2007-4-23
*
*V1.1
*/
#include<reg52.h>
sbit LED=P1^2;
void Init_Timer1(void)
{
TMOD |= 0x10;
TH1=0x00; /* Init value */
TL1=0x00;
EA=1; /* interupt enable */
ET1=1; /* enable timer1 interrupt */
TR1=1;
}
main()
{
Init_Timer1();
while(1);
}
void Timer1_isr(void) interrupt 3 using 1
{
TH1=0x00; /* Init value */
TL1=0x00;
LED=~LED;
}定時器1的
/*right 2007,ShangHai HaoTun Electronic Technology co.,Ltd
*
*This sample is used for Timer0 16bit timer mode.
*
*write by Shifang 2007-4-26
*
*V1.1
*/
#include<reg52.h>
sbit LED=P1^2;
void TIM2Inital(void)
{
RCAP2H = (65536-60000)/256;//@12M 10ms 16bit 自動重載
RCAP2L = (65536-60000)%256;
ET2=1;
EA=1;
TR2=1;
}
main()
{
TIM2Inital();
while(1);
}
void Timer0_isr(void) interrupt 1 using 1
{
TH0=0x00; /* Init value */
TL0=0x00;
LED=~LED;//指示燈反相
}
void TIM2(void) interrupt 5 using 1//定時器2中斷
{
TF2=0;
LED=~LED;//指示燈反相
/*right 2007,ShangHai HaoTun Electronic Technology co.,Ltd
*
*This sample is used for Timer0 16bit timer mode.
*
*write by Shifang 2007-4-26
*
*V1.1
*/
#include<reg52.h>
sbit LED=P1^2;
void TIM2Inital(void)
{
RCAP2H = (65536-60000)/256;//@12M 10ms 16bit 自動重載
RCAP2L = (65536-60000)%256;
ET2=1;
EA=1;
TR2=1;
}
main()
{
TIM2Inital();
while(1);
}
void Timer0_isr(void) interrupt 1 using 1
{
TH0=0x00; /* Init value */
TL0=0x00;
LED=~LED;//指示燈反相
}
void TIM2(void) interrupt 5 using 1//定時器2中斷
{
TF2=0;
LED=~LED;//指示燈反相
}定時器2
開發板配套程序佔得你看看
Ⅷ 51單片機匯編如何進行模塊化編程希望高人提供系統資料
匯編精確度很高,但是移植性不好,
寫完一個程序,
不能很好地馬上移到另一個工程中使用,,我使用的C語言,
對於你的問題,暫時幫不了
Ⅸ 51單片機用匯編可以進行模塊化編程嗎
可以的。只是在模塊調用時注意輸入輸出數據的銜接,哪些寄存器存什麼數,執行完後用哪個寄存器帶出來數據,都要考慮好。
可以參考和學習一下,匯編子程序庫。