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单片机用汇编可以进行模块化编程吗
可以的。只是在模块调用时注意输入输出数据的衔接,哪些寄存器存什么数,执行完后用哪个寄存器带出来数据,都要考虑好。
可以参考和学习一下,汇编子程序库。