Thông báo

Collapse
No announcement yet.

lap trinh c cho vi khien

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • #61
    Cho hoi ti!

    Voi pic, to khai bao mang:

    const unsigned char digital[] = {0b00010010,0b10001111,0b10101010};

    Thi Ok nhung trong Keil C,khai bao nhu vay no lai bao loi la khai bao sai kieu octal la cai quai gi the cac bac !

    Comment


    • #62
      Nguyên văn bởi nhh
      Cho hoi ti!

      Voi pic, to khai bao mang:

      const unsigned char digital[] = {0b00010010,0b10001111,0b10101010};

      Thi Ok nhung trong Keil C,khai bao nhu vay no lai bao loi la khai bao sai kieu octal la cai quai gi the cac bac !
      Bạn viết kiểu trên là dùng với HTPIC, nó hỗ trợ kiểu viết số nhị phân bắt đầu bằng 0b...
      Theo tôi biết thì Keil không viết được thế này, bạn chuyển đoạn 0b-->0x tức số hex.
      Như sau, tui chuyển đoạn code sang số hex:
      const unsigned char digital[] = {0x12,0x8F,0x0AA};
      Còn chuyển bin sang hex thì dùng cái culculator của Windows.

      Comment


      • #63
        Thanks !

        Ca CCSC khai bao nhu the cung ok, khong hieu sao thang Keil lai khong ho tro !
        Dung may tinh chuyen thi duoc thoi , nhung phien qua !

        Comment


        • #64
          Gửi bác Giáoucan! mình sử dụng chương trình của Bác để làm LCD, chạy rất tốt, nhưng mà mình không thể hiển thị được số lẽ, chẳng hạn như là 333.4432. Bác có thể giúp mình được không?
          hãy cố gắng dù vướn phải thất bại!!!!!!!!

          Comment


          • #65
            Nguyên văn bởi chipmickey
            Gửi bác Giáoucan! mình sử dụng chương trình của Bác để làm LCD, chạy rất tốt, nhưng mà mình không thể hiển thị được số lẽ, chẳng hạn như là 333.4432. Bác có thể giúp mình được không?
            Thì đó là do thủ tục in kí tự của bạn thôi, bạn in thêm dấu '.' hoặc ',' trước khi in các con số ở hàng thập phân!

            Comment


            • #66
              vấn đề là ở chổ đó, do chương trình in của mình không có kiểm tra số lẽ. nên phải viết thêm chương trình in số lẽ này ra, nhưng mà mình chưa có cách, mình khai báo kiểu long để tiến hành chia lấy số lẽ nhưng bị báo lỗi khi lấy phần dư. mình định chuyển nó qua string hết trước khi in nó ra, không biết có được không, các bác có thể chỉ cho mình giải thuật để chuyển đổi một số đó ra chuổi được không?
              hãy cố gắng dù vướn phải thất bại!!!!!!!!

              Comment


              • #67
                mạch hẹn giờ!

                Xin các đại hiệp giúp dùm đệ với... Đệ không biết gì về ngôn ngữ C, đang sắp đăng ký học. Nhưng bây giờ cần gấp quá rồi, mà có cái code C này nên đệ bó tay luôn, nếu hiểu C thì chỉ cần sửa lại một chút xíu là được liền. Mong các sư huynh giúp nha: làm thế nào để ban đầu bit p1.3 =0,khi tới thời gian báo thức
                If Clock_hour = Alarm_hour Then
                If Clock_min = Alarm_min Then
                thì p1.3 =1
                Chứ khi gắn đèn vào nó cứ chớp tắt liên tục (vì nó báo ra buzzer mà) nhưng bây giờ đệ muốn p1.3=1 để điều khiển đóng mở một tải nào đó. Xin các sư huynh cứu giúp nha! Nếu thành công đệ sẽ upload lên cho các sư huynh tham khảo...
                '================================================= ==========================
                $regfile = "REG51.DAT"
                '---------------------------------------------------------------------------
                ' 7 Segment Pattern Data
                Const Segpat0 = &B11000000 ' 0 ****A***
                Const Segpat1 = &B11111001 ' 1 * *
                Const Segpat2 = &B10100100 ' 2 F B
                Const Segpat3 = &B10110000 ' 3 * *
                Const Segpat4 = &B10011001 ' 4 ****G***
                Const Segpat5 = &B10010010 ' 5 * *
                Const Segpat6 = &B10000010 ' 6 E C
                Const Segpat7 = &B11011000 ' 7 * *
                Const Segpat8 = &B10000000 ' 8 ****D***
                Const Segpat9 = &B10011000 ' 9
                Const Segpblk = &B11111111 ' 10 BLANK
                '---------------------------------------------------------------------------
                Hour10 Alias P1.0
                Led_am Alias P1.1
                Led_pm Alias P1.2
                Piezo Alias P1.3
                Sw_alarm Alias P1.4
                Sw_exit Alias P1.5
                Sw_hour Alias P1.6
                Sw_min Alias P1.7
                '---------------------------------------------------------------------------
                Dim Icount As Word
                Dim Clock_cent As Byte ' 1/100 ? ??(0 ~ 99)
                Dim Clock_second As Byte ' ? ?? ?? (0 ~ 59)
                Dim Clock_min As Byte ' ? ?? ?? (0 ~ 59)
                Dim Clock_hour As Byte ' ? ?? ?? (0 ~ 23)
                Dim Alarm_min As Byte ' ? ?? ?? (0 ~ 59)
                Dim Alarm_hour As Byte ' ? ?? ?? (0 ~ 23)
                Dim Data_min As Byte
                Dim Data_hour As Byte
                Dim Tempa As Byte
                Dim Tempb As Byte
                Dim Tempc As Byte
                Dim Beep As Bit
                Dim Dot_high As Bit
                Dim Dot_low As Bit
                Dim Dot_alarm As Bit
                '================================================= ==========================
                On Timer0 Timebase ' Timer0 Interrupt
                '---------------------------------------------------------------------------
                Config Timer0 = Timer , Gate = Internal , Mode = 2 ' Timer0 Auto Reload Timer Mode
                Load Timer0 , 200 ' Auto Reload Constant 200 uSec
                Start Timer0 ' Start Timer0
                Enable Timer0 ' Enable Timer0
                Enable Interrupts ' Enable All Interrupt
                '================================================= ==========================
                Icount = 0
                Clock_cent = 0
                Clock_second = 0
                Clock_min = 0
                Clock_hour = 0
                Alarm_min = 0
                Alarm_hour = 0
                Beep = 0
                Dot_alarm = 1
                '---------------------------------------------------------------------------
                Main_clock: ' ?? ????
                '
                If Clock_cent > 99 Then
                Clock_cent = 0
                Incr Clock_second
                End If
                '
                If Clock_second > 59 Then
                Clock_second = 0
                Incr Clock_min
                End If
                '
                If Clock_min > 59 Then
                Clock_min = 0
                Incr Clock_hour
                End If
                '
                If Clock_hour > 23 Then
                Clock_hour = 0
                End If
                '
                Data_min = Clock_min : Data_hour = Clock_hour
                '
                Gosub Dot_proc
                Gosub Clock_disp
                '
                If Sw_alarm = 0 Then
                Gosub Alarm_proc
                End If
                '
                If Sw_min = 0 Then
                Clock_second = 0
                Incr Clock_min
                If Clock_min > 59 Then
                Clock_min = 0
                End If
                Waitms 100
                End If
                '
                If Sw_hour = 0 Then
                Incr Clock_hour
                If Clock_hour > 23 Then
                Clock_hour = 0
                End If
                Waitms 100
                End If
                '
                If Dot_alarm = 0 Then
                If Clock_hour = Alarm_hour Then
                If Clock_min = Alarm_min Then
                Set Beep
                Else
                Reset Beep
                End If
                Else
                Reset Beep
                End If
                Else
                Reset Beep
                End If
                '
                Goto Main_clock
                '================================================= ==========================
                Clock_disp:
                '
                Tempa = Data_min Mod 10 : Gosub Patconv
                If Dot_alarm = 0 Then
                Tempb = Tempb And &H7F
                End If
                P3 = Tempb
                '
                Tempa = Data_min / 10 : Gosub Patconv
                If Dot_high = 0 Then
                Tempb = Tempb And &H7F
                End If
                P2 = Tempb
                '
                If Data_hour < 12 Then
                Reset Led_am : Set Led_pm
                Tempc = Data_hour
                Else
                Reset Led_pm : Set Led_am
                Tempc = Data_hour - 12
                End If
                '
                If Tempc = 0 Then
                Tempc = 12
                End If
                '
                Tempa = Tempc Mod 10 : Gosub Patconv
                If Dot_low = 0 Then
                Tempb = Tempb And &H7F
                End If
                P0 = Tempb
                '
                Tempa = Tempc / 10
                '
                If Tempa = 1 Then
                Reset Hour10
                Else
                Set Hour10
                End If
                '
                Return
                '
                '================================================= ==========================
                Dot_proc:
                '
                If Clock_second < 30 Then
                Reset Dot_low
                If Clock_cent < 50 Then
                Reset Dot_high
                Else
                Set Dot_high
                End If
                Else
                Reset Dot_high
                If Clock_cent < 50 Then
                Reset Dot_low
                Else
                Set Dot_low
                End If
                End If
                '
                Return
                '
                '================================================= ==========================
                Alarm_proc:
                '
                Set Dot_high : Set Dot_low
                Data_min = Alarm_min : Data_hour = Alarm_hour
                Gosub Clock_disp
                Waitms 100
                '
                Alarm_loop:
                Data_min = Alarm_min : Data_hour = Alarm_hour
                Gosub Clock_disp
                If Sw_min = 0 Then
                Incr Alarm_min
                If Alarm_min > 59 Then
                Alarm_min = 0
                End If
                Waitms 50
                End If
                '
                If Sw_hour = 0 Then
                Incr Alarm_hour
                If Alarm_hour > 23 Then
                Alarm_hour = 0
                End If
                Waitms 50
                End If
                '
                If Sw_alarm = 0 Then
                Set Dot_alarm
                Goto Alarm_ret
                End If
                '
                If Sw_exit = 0 Then
                Reset Dot_alarm
                Goto Alarm_ret
                End If
                '
                Goto Alarm_loop
                '
                Alarm_ret:
                '
                Waitms 500
                '
                Return
                '================================================= ==========================
                Patconv: ' FND ?? ??
                '
                Tempa = Tempa And &H0F
                Select Case Tempa
                Case 0 : Tempb = Segpat0
                Case 1 : Tempb = Segpat1
                Case 2 : Tempb = Segpat2
                Case 3 : Tempb = Segpat3
                Case 4 : Tempb = Segpat4
                Case 5 : Tempb = Segpat5
                Case 6 : Tempb = Segpat6
                Case 7 : Tempb = Segpat7
                Case 8 : Tempb = Segpat8
                Case 9 : Tempb = Segpat9
                Case Else
                End Select
                '
                Return
                '================================================= ==========================
                Timebase: ' ??? ???? ??
                '
                Incr Icount
                '
                If Icount > 49 Then ' 49
                '
                Icount = 0
                Incr Clock_cent
                End If
                '
                If Beep = 1 Then
                If Piezo = 1 Then
                Reset Piezo
                Else
                Set Piezo
                End If
                End If
                '
                Return
                '---------------------------------------------------------------------------
                '
                '============================ END OF FILE ==================================

                Comment


                • #68
                  đó là địa chỉ ngắt time o
                  |

                  Comment

                  Về tác giả

                  Collapse

                  thiepvt Tìm hiểu thêm về thiepvt

                  Bài viết mới nhất

                  Collapse

                  Đang tải...
                  X