⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lst

📁 电视信号发生器可以产生滚动彩条信号
💻 LST
字号:
C51 COMPILER V8.08   MAIN                                                                  05/20/2008 14:06:01 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE MAIN
NO OBJECT MODULE REQUESTED
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND SRC(.\main.SRC)

line level    source

   1           #include<reg51.h>
   2          
   3          sbit P30=P3^0;
   4          sbit P31=P3^1;
   5          sbit P32=P3^2;
   6          sbit P33=P3^3;
   7          sbit P34=P3^4;
   8           void gdct()
   9          {
  10   1       //;滚动彩条信号
  11   1      //      org 0000h
  12   1      #pragma asm
  13   1      
  14   1      Line:   setb p1.4       ;行同步脉冲开始
  15   1              mov r4,#13      ;设定循环次数
  16   1              clr p1.4        ;行同步脉冲结束
  17   1              inc dptr        ;计数器递增,并作行消隐前肩的延时
  18   1              mov r3,#45      ;预先设定场消隐计数器初值
  19   1              mov p1,7
  20   1              djnz r0,aaa
  21   1              mov r0,#15
  22   1              nop
  23   1              sjmp bbb
  24   1      aaa:    cjne r0,#7,ccc
  25   1              nop
  26   1              nop
  27   1      bbb:    mov a,r1
  28   1              add a,#4
  29   1              mov r1,a
  30   1              mov r4,#9
  31   1              cjne a,b,ccc
  32   1              mov r7,#0
  33   1              dec r4
  34   1      ccc:    djnz r4,$
  35   1              clr a
  36   1              mov p1,a        
  37   1              cjne a,dph,Line ;继续下一行周期
  38   1              
  39   1      Frame:  setb p1.4       ;场消隐期间仍要行同步脉冲
  40   1              mov r2,#12      ;设定延时时间
  41   1              clr p1.4        ;行同步脉冲结束
  42   1      FF:     cjne r3,#32,FB  ;倒数到32时,开始场同步信号
  43   1              sjmp Chg
  44   1      FB:     cjne r3,#30,Cnt ;倒数到30时,结束场同步信号
  45   1      Chg:    cpl p1.5        ;场同步信号反转
  46   1              sjmp Dly
  47   1      Cnt:    mov dptr,#-480  ;设定显示区域的行数
  48   1              mov r1,a
  49   1      Dly:    djnz r2,$       ;延时
  50   1              xch a,b
  51   1              add a,#148      ;((480-512)+45*148)\256=4
  52   1              xch a,b
  53   1              mov r7,#7
  54   1              cjne r3,#1,Next ;判断场消隐是否到时
  55   1              ajmp Line       ;转到显示区域信号输出
C51 COMPILER V8.08   MAIN                                                                  05/20/2008 14:06:01 PAGE 2   

  56   1      Next:   djnz r3,Frame   ;继续场消隐周期
  57   1      #pragma endasm
  58   1      }
  59          
  60          void hbst()
  61          {
  62   1       #pragma asm
  63   1      //;黑白竖条
  64   1      //      org 0000h
  65   1      Line1:  setb p1.4       ;行同步脉冲开始
  66   1              mov r3,#45      ;预先设定场消隐计数器初值
  67   1              clr p1.4        ;行同步脉冲结束
  68   1              inc dptr        ;计数器递增,并作行消隐前肩的延时
  69   1              inc dptr
  70   1              setb p1.3
  71   1              dec p1
  72   1              inc p1
  73   1              dec p1
  74   1              inc p1
  75   1              dec p1
  76   1              inc p1
  77   1              dec p1
  78   1              inc p1
  79   1              dec p1
  80   1              inc p1
  81   1              dec p1
  82   1              inc p1
  83   1              dec p1
  84   1              inc p1
  85   1              dec p1
  86   1              inc p1
  87   1              dec p1
  88   1              inc p1
  89   1              dec p1
  90   1              inc p1
  91   1              dec p1
  92   1              inc p1
  93   1              dec p1
  94   1              inc p1
  95   1              dec p1
  96   1              inc p1
  97   1              dec p1
  98   1              inc p1
  99   1              dec p1
 100   1              inc p1
 101   1              dec p1
 102   1              mov p1,a
 103   1              cjne a,dph,Line1        ;继续下一行周期
 104   1              
 105   1      Frame1: setb p1.4       ;场消隐期间仍要行同步脉冲
 106   1              mov r2,#14      ;设定延时时间
 107   1              clr p1.4        ;行同步脉冲结束
 108   1      FF1:    cjne r3,#32,FB1 ;倒数到32时,开始场同步信号
 109   1              sjmp Chg1
 110   1      FB1:    cjne r3,#30,Cnt1        ;倒数到30时,结束场同步信号
 111   1      Chg1:   cpl p1.5        ;场同步信号反转
 112   1              sjmp Dly1
 113   1      Cnt1:   mov dptr,#-960  ;设定显示区域的行数
 114   1              nop             ;匹配周期时长
 115   1      Dly1:   djnz r2,$       ;延时
 116   1              cjne r3,#1,Next1        ;判断场消隐是否到时
 117   1              ajmp Line1      ;转到显示区域信号输出
C51 COMPILER V8.08   MAIN                                                                  05/20/2008 14:06:01 PAGE 3   

 118   1      Next1:  djnz r3,Frame1  ;继续场消隐周期
 119   1      #pragma endasm
 120   1      
 121   1      }
 122          
 123          void kct()
 124          {
 125   1       #pragma asm
 126   1       //;宽彩条信号
 127   1      //      org 0000h
 128   1      Line2:  setb p1.4       ;行同步脉冲开始
 129   1              nop             ;延时
 130   1              clr p1.4        ;行同步脉冲结束
 131   1              inc dptr        ;计数器递增,并作行消隐前肩的延时
 132   1              inc dptr
 133   1              mov p1,#15      ;设定循环次数
 134   1              mov r3,#45      ;预先设定场消隐计数器初值
 135   1              djnz p1,$       ;输出彩条信号
 136   1              cjne a,dph,Line2        ;继续下一行周期
 137   1              
 138   1      Frame2: setb p1.4       ;场消隐期间仍要行同步脉冲
 139   1              mov r2,#14      ;设定延时时间
 140   1              clr p1.4        ;行同步脉冲结束
 141   1      FF2:    cjne r3,#32,FB2 ;倒数到32时,开始场同步信号
 142   1              sjmp Chg2
 143   1      FB2:    cjne r3,#30,Cnt2        ;倒数到30时,结束场同步信号
 144   1      Chg2:   cpl p1.5        ;场同步信号反转
 145   1              sjmp Dly2
 146   1      Cnt2:   mov dptr,#-960  ;设定显示区域的行数
 147   1              nop             ;匹配周期时长
 148   1      Dly2:   djnz r2,$       ;延时
 149   1              cjne r3,#1,Next2        ;判断场消隐是否到时
 150   1              ajmp Line1      ;转到显示区域信号输出
 151   1      Next2:  djnz r3,Frame2  ;继续场消隐周期
 152   1      #pragma endasm
 153   1      
 154   1      }
 155          
 156          void qp()
 157          {
 158   1       #pragma asm
 159   1        //;棋盘信号
 160   1      //      org 0000h
 161   1      Line3:  setb p1.4       ;行同步脉冲开始
 162   1              mov r4,#7       ;延时
 163   1              clr p1.4        ;行同步脉冲结束
 164   1              inc dptr        ;计数器递增,并作行消隐前肩的延时
 165   1              mov r3,#45      ;预先设定场消隐计数器初值
 166   1              mov p1,b
 167   1              djnz r0,aaa3
 168   1              xrl p1,#7
 169   1              xrl b,#7
 170   1              xrl p1,#7
 171   1              mov r0,#80
 172   1              mov r4,#5
 173   1      aaa3:   xrl p1,#7
 174   1              djnz r4,aaa3
 175   1              mov p1,#0
 176   1              cjne a,dph,Line3        ;继续下一行周期
 177   1              
 178   1      Frame3: setb p1.4       ;场消隐期间仍要行同步脉冲
 179   1              mov r2,#14      ;设定延时时间
C51 COMPILER V8.08   MAIN                                                                  05/20/2008 14:06:01 PAGE 4   

 180   1              clr p1.4        ;行同步脉冲结束
 181   1      FF3:    cjne r3,#32,FB3 ;倒数到32时,开始场同步信号
 182   1              sjmp Chg3
 183   1      FB3:    cjne r3,#30,Cnt3        ;倒数到30时,结束场同步信号
 184   1      Chg3:   cpl p1.5        ;场同步信号反转
 185   1              sjmp Dly3
 186   1      Cnt3:   mov dptr,#-480  ;设定显示区域的行数
 187   1              ;nop            ;匹配周期时长
 188   1              mov r0,#80
 189   1      Dly3:   djnz r2,$       ;延时
 190   1              cjne r3,#1,Next3        ;判断场消隐是否到时
 191   1              ajmp Line3      ;转到显示区域信号输出
 192   1      Next3:  djnz r3,Frame3  ;继续场消隐周期
 193   1      #pragma endasm
 194   1      
 195   1      }
 196          
 197            void xq()
 198          {
 199   1      #pragma asm
 200   1      //;细彩条
 201   1      //      org 0000h
 202   1      Line4:  setb p1.4       ;行同步脉冲开始
 203   1              mov r3,#45      ;预先设定场消隐计数器初值
 204   1              clr p1.4        ;行同步脉冲结束
 205   1              inc dptr        ;计数器递增,并作行消隐前肩的延时
 206   1              inc dptr
 207   1              nop
 208   1              inc p1
 209   1              inc p1
 210   1              inc p1
 211   1              inc p1
 212   1              inc p1
 213   1              inc p1
 214   1              inc p1
 215   1              inc p1
 216   1              inc p1
 217   1              inc p1
 218   1              inc p1
 219   1              inc p1
 220   1              inc p1
 221   1              inc p1
 222   1              inc p1
 223   1              mov p1,a
 224   1              inc p1
 225   1              inc p1
 226   1              inc p1
 227   1              inc p1
 228   1              inc p1
 229   1              inc p1
 230   1              inc p1
 231   1              inc p1
 232   1              inc p1
 233   1              inc p1
 234   1              inc p1
 235   1              inc p1
 236   1              inc p1
 237   1              inc p1
 238   1              inc p1
 239   1              mov p1,a
 240   1              cjne a,dph,Line4        ;继续下一行周期
 241   1              
C51 COMPILER V8.08   MAIN                                                                  05/20/2008 14:06:01 PAGE 5   

 242   1      Frame4: setb p1.4       ;场消隐期间仍要行同步脉冲
 243   1              mov r2,#14      ;设定延时时间
 244   1              clr p1.4        ;行同步脉冲结束
 245   1      FF4:    cjne r3,#32,FB4 ;倒数到32时,开始场同步信号
 246   1              sjmp Chg4
 247   1      FB4:    cjne r3,#30,Cnt4        ;倒数到30时,结束场同步信号
 248   1      Chg4:   cpl p1.5        ;场同步信号反转
 249   1              sjmp Dly4
 250   1      Cnt4:   mov dptr,#-960  ;设定显示区域的行数
 251   1              nop             ;匹配周期时长
 252   1      Dly4:   djnz r2,$       ;延时
 253   1              cjne r3,#1,Next4        ;判断场消隐是否到时
 254   1              ajmp Line4      ;转到显示区域信号输出
 255   1      Next4:  djnz r3,Frame4  ;继续场消隐周期
 256   1      #pragma endasm
 257   1      
 258   1      }
 259          
 260           void main()
 261           {
 262   1        while(1)
 263   1        {
 264   2         if(!P30)gdct();
 265   2         if(!P31)hbst();
 266   2         if(!P32) kct();
 267   2         if(!P33)qp();
 268   2         if(!P34)xq();
 269   2        }
 270   1       }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    685    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -