标题: 单片机reg52.h可以直接改为reg51.h吗? [打印本页]

作者: 巧颜,    时间: 2021-12-7 22:48
标题: 单片机reg52.h可以直接改为reg51.h吗?
  1. #include <reg52.h>                        //        定义头文件
  2. #define        SEG7 P0                                //        定义7段数码管接至P0
  3. char code TAB[10]={        0xc0, 0xf9, 0xa4, 0xb0, 0x99,        // 数字0-4
  4.                                         0x92, 0x83, 0xf8, 0x80, 0x98};        // 数字5-9
  5. void delay1ms(int);                        //        声明延迟函数

  6. main()                                                //        主程序开始
  7. {               
  8.         P2=0xf7;                                //        P2.3为0,让最右边数码管显示
  9.         IE=0x85;                                //        打开外部中断INT0和INT1
  10.         IP=0x04;                                //        设置INT1优先级高于INT0
  11.         SEG7=0xbf;                                //        数码管初始时显示“-
  12.         while(1);                                //        无穷等待,主程序无任何动作
  13. }                                                        //        主程序结束
  14. // INT 0的中断子程序 - 数码管从0加到9
  15. void add_int0(void) interrupt 0//INT0中断子程序开始
  16. {        char i;
  17.         unsigned saveSEG7=SEG7;        //        储存中断前数码管状态
  18.         for(i=0;i<10;i++)                //        显示0-9,共10次循环
  19.                 {        
  20.                         SEG7=TAB[i];        //        显示数字,使用实验板需改为"SEG7=~TAB[i];"
  21.                         delay1ms(500);        //        延迟500ms
  22.                 }                                        //        for循环结束;
  23.         SEG7=saveSEG7;                        //        写回中断前数码管状态
  24. }                                                        //        结束INT0 中断子程序
  25. // INT 1的中断子程序 - 数码管从9减到0
  26. void subb_int1(void) interrupt 2//INT0中断子程序开始
  27. {        char i;
  28.         unsigned saveSEG7=SEG7;        //        储存中断前数码管状态
  29.         for(i=9;i>=0;i--)                //        显示0-9,共10次循环
  30.                 {        
  31.                         SEG7=TAB[i];        //        显示数字,使用实验板需改为"SEG7=~TAB[i];"
  32.                         delay1ms(500);        //        延迟500ms
  33.                 }                                        //        for循环结束;
  34.         SEG7=saveSEG7;                        //        写回中断前数码管状态
  35. }                                                        //        结束INT0 中断子程序
  36. // 延迟函数,延迟约x ms
  37. void delay1ms(int x)                //        延迟函数开始
  38. {        int i,j;                                //        声明整数变数i,j
  39.         for (i=0;i<x;i++)                //        计数x次,延迟x ms
  40.                 for (j=0;j<120;j++);//        计数120次,延迟1ms
  41. }                                                        //        延迟函数结束
复制代码

作者: Hephaestus    时间: 2021-12-7 23:01
你可以踹(try)一踹,看看有什么后果。
作者: 188610329    时间: 2021-12-8 00:02
理论上,别说改REG51.H  就算改成别奇奇怪怪的,甚至就算删掉也没有什么不可以。

关键是,你改的目的是什么? 你想达到的效果是什么?  
然后,改一个数字,点一下编译, 最多最多最多,就是再下载一下看看实际效果的事情,值得写那么多字来问么?
作者: 908260591    时间: 2021-12-8 08:08
二楼说的有道理!你的目的是什么???
作者: 908260591    时间: 2021-12-8 08:09
楼上说的有道理!楼主你的目的是什么??
作者: munuc_w    时间: 2021-12-8 08:23
不用改,直接用就可以了。REG52.H包括了改REG51.H的全部。
作者: sxy4609    时间: 2021-12-8 08:45
reg52.h可以直接替换,不用改
作者: 郑汉松    时间: 2021-12-8 09:02
程序如果有用到定时器2就不可以改,否则就行
作者: wspytu    时间: 2021-12-8 09:05
可以改,只是reg52中有部分特殊寄存器在reg51.h中没有定义
作者: devcang    时间: 2021-12-8 09:09

不要任何头文件都可以,自己写各寄存器就好了
作者: DrreamLovely    时间: 2021-12-8 11:28
没啥用 因为52是51的升级版本
作者: 13205495918    时间: 2021-12-8 16:40
看你用啥了,你要是用的东西只有reg52.h里面有,那就不能换。
作者: 18520649817    时间: 2021-12-11 21:03
188610329 发表于 2021-12-8 00:02
理论上,别说改REG51.H  就算改成别奇奇怪怪的,甚至就算删掉也没有什么不可以。

关键是,你改的目的是 ...

不可以删掉吧,这是头文件来的。
作者: 十三境阿良    时间: 2021-12-11 21:06
可以改的吧,你想干嘛呢
作者: 13205495918    时间: 2021-12-12 08:59
这俩头文件里面的东西是被包含的52包含51。
作者: uestchina    时间: 2021-12-12 09:31
如果是个小系统,不用Time2等一些89C52的资源,是可以改成REG51.H的




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1